Skip to content

Commit

Permalink
#18 Added review list activity
Browse files Browse the repository at this point in the history
  • Loading branch information
MewX committed Jul 12, 2018
1 parent e87fb22 commit c457c69
Show file tree
Hide file tree
Showing 17 changed files with 295 additions and 72 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import org.junit.Assert;
import org.junit.Test;

import java.util.Calendar;
import java.util.GregorianCalendar;

@SmallTest
Expand Down Expand Up @@ -38,21 +39,21 @@ public void testParseReviewList() {
ReviewList.Review review = reviewList.getList().get(0);
Assert.assertEquals(review.getRid(), 79800);
Assert.assertEquals(review.getPostTime().getTime(),
new GregorianCalendar(2013, 5, 25, 17, 16, 31).getTime().getTime());
new GregorianCalendar(2013, Calendar.MAY, 25, 17, 16, 31).getTime().getTime());
Assert.assertEquals(review.getNoReplies(), 1);
Assert.assertEquals(review.getLastReplyTime().getTime(),
new GregorianCalendar(2013, 5, 28, 18, 49, 16).getTime().getTime());
new GregorianCalendar(2013, Calendar.MAY, 28, 18, 49, 16).getTime().getTime());
Assert.assertEquals(review.getUid(), 81669);
Assert.assertEquals(review.getUserName(), "老衲0轻音");
Assert.assertEquals(review.getTitle(), "前排……");

review = reviewList.getList().get(1);
Assert.assertEquals(review.getRid(), 79826);
Assert.assertEquals(review.getPostTime().getTime(),
new GregorianCalendar(2013, 5, 25, 23, 20, 2).getTime().getTime());
new GregorianCalendar(2013, Calendar.MAY, 25, 23, 20, 2).getTime().getTime());
Assert.assertEquals(review.getNoReplies(), 4);
Assert.assertEquals(review.getLastReplyTime().getTime(),
new GregorianCalendar(2013, 5, 27, 23, 42, 59).getTime().getTime());
new GregorianCalendar(2013, Calendar.MAY, 27, 23, 42, 59).getTime().getTime());
Assert.assertEquals(review.getUid(), 34924);
Assert.assertEquals(review.getUserName(), "冒险奏鸣");
Assert.assertEquals(review.getTitle(), "有种神曲奏界的既视感");
Expand Down Expand Up @@ -88,43 +89,43 @@ public void testParseReviewListPageTwo() {
ReviewList.Review review = reviewList.getList().get(0);
Assert.assertEquals(review.getRid(), 79800);
Assert.assertEquals(review.getPostTime().getTime(),
new GregorianCalendar(2013, 5, 25, 17, 16, 31).getTime().getTime());
new GregorianCalendar(2013, Calendar.MAY, 25, 17, 16, 31).getTime().getTime());
Assert.assertEquals(review.getNoReplies(), 1);
Assert.assertEquals(review.getLastReplyTime().getTime(),
new GregorianCalendar(2013, 5, 28, 18, 49, 16).getTime().getTime());
new GregorianCalendar(2013, Calendar.MAY, 28, 18, 49, 16).getTime().getTime());
Assert.assertEquals(review.getUid(), 81669);
Assert.assertEquals(review.getUserName(), "老衲0轻音");
Assert.assertEquals(review.getTitle(), "前排……");

review = reviewList.getList().get(1);
Assert.assertEquals(review.getRid(), 79826);
Assert.assertEquals(review.getPostTime().getTime(),
new GregorianCalendar(2013, 5, 25, 23, 20, 2).getTime().getTime());
new GregorianCalendar(2013, Calendar.MAY, 25, 23, 20, 2).getTime().getTime());
Assert.assertEquals(review.getNoReplies(), 4);
Assert.assertEquals(review.getLastReplyTime().getTime(),
new GregorianCalendar(2013, 5, 27, 23, 42, 59).getTime().getTime());
new GregorianCalendar(2013, Calendar.MAY, 27, 23, 42, 59).getTime().getTime());
Assert.assertEquals(review.getUid(), 34924);
Assert.assertEquals(review.getUserName(), "冒险奏鸣");
Assert.assertEquals(review.getTitle(), "有种神曲奏界的既视感");

review = reviewList.getList().get(2);
Assert.assertEquals(review.getRid(), 79801);
Assert.assertEquals(review.getPostTime().getTime(),
new GregorianCalendar(2013, 5, 25, 17, 16, 31).getTime().getTime());
new GregorianCalendar(2013, Calendar.MAY, 25, 17, 16, 31).getTime().getTime());
Assert.assertEquals(review.getNoReplies(), 1);
Assert.assertEquals(review.getLastReplyTime().getTime(),
new GregorianCalendar(2013, 5, 28, 18, 49, 16).getTime().getTime());
new GregorianCalendar(2013, Calendar.MAY, 28, 18, 49, 16).getTime().getTime());
Assert.assertEquals(review.getUid(), 81670);
Assert.assertEquals(review.getUserName(), "老衲0轻音");
Assert.assertEquals(review.getTitle(), "前排……");

review = reviewList.getList().get(3);
Assert.assertEquals(review.getRid(), 79827);
Assert.assertEquals(review.getPostTime().getTime(),
new GregorianCalendar(2013, 5, 25, 23, 20, 2).getTime().getTime());
new GregorianCalendar(2013, Calendar.MAY, 25, 23, 20, 2).getTime().getTime());
Assert.assertEquals(review.getNoReplies(), 4);
Assert.assertEquals(review.getLastReplyTime().getTime(),
new GregorianCalendar(2013, 5, 27, 23, 42, 59).getTime().getTime());
new GregorianCalendar(2013, Calendar.MAY, 27, 23, 42, 59).getTime().getTime());
Assert.assertEquals(review.getUid(), 34925);
Assert.assertEquals(review.getUserName(), "冒险奏鸣");
Assert.assertEquals(review.getTitle(), "有种神曲奏界的既视感");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@

<!-- Novel Review List Activity -->
<activity android:name=".activity.NovelReviewListActivity"
android:label="@string/action_chapter_list"
android:label="@string/action_review_list"
android:screenOrientation="unspecified">
</activity>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -522,8 +522,9 @@ else if (menuItem.getItemId() == R.id.action_continue_read_progress) {
// not found
Toast.makeText(this, getResources().getText(R.string.reader_msg_no_saved_reading_progress), Toast.LENGTH_SHORT).show();
} else if (menuItem.getItemId() == R.id.action_go_to_forum) {
// TODO:
Toast.makeText(this, "下个版本这里就能点进评论区啦", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(NovelInfoActivity.this, NovelReviewListActivity.class);
intent.putExtra("aid", aid);
startActivity(intent);
}
return super.onOptionsItemSelected(menuItem);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,25 +17,28 @@
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.readystatesoftware.systembartint.SystemBarTintManager;
import com.umeng.analytics.MobclickAgent;

import org.mewx.wenku8.R;
import org.mewx.wenku8.adapter.ReviewItemAdapter;
import org.mewx.wenku8.global.api.ReviewList;
import org.mewx.wenku8.global.api.Wenku8API;
import org.mewx.wenku8.global.api.Wenku8Parser;
import org.mewx.wenku8.listener.MyItemClickListener;
import org.mewx.wenku8.util.LightNetwork;

import java.lang.ref.WeakReference;
import java.nio.charset.Charset;
import java.util.concurrent.atomic.AtomicBoolean;

/**
* Created by MewX on 2015/5/14.
* Novel Chapter Activity.
* Created by MewX on 2018/7/12.
* Novel Review Activity.
*/
public class NovelReviewListActivity extends AppCompatActivity {
public class NovelReviewListActivity extends AppCompatActivity implements MyItemClickListener {
// private vars
private int aid = 1;

Expand All @@ -48,6 +51,7 @@ public class NovelReviewListActivity extends AppCompatActivity {
private TextView mLoadingButton;

// switcher
private ReviewItemAdapter mAdapter;
private ReviewList reviewList = new ReviewList();
private static AtomicBoolean isLoading = new AtomicBoolean(false);
int pastVisibleItems, visibleItemCount, totalItemCount;
Expand Down Expand Up @@ -95,7 +99,7 @@ protected void onCreate(Bundle savedInstanceState) {
mLoadingStatusTextView = findViewById(R.id.list_loading_status);
mLoadingButton = findViewById(R.id.btn_loading);

mRecyclerView.setHasFixedSize(true);
mRecyclerView.setHasFixedSize(false);
// use a linear layout manager
mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
Expand All @@ -104,17 +108,18 @@ protected void onCreate(Bundle savedInstanceState) {
mRecyclerView.addOnScrollListener(new MyOnScrollListener());

// set click event for retry and cancel loading
mLoadingButton.setOnClickListener(v -> new AsyncReviewListLoader(this, mSwipeRefreshLayout, aid, reviewList)); // retry loading
mLoadingButton.setOnClickListener(v -> new AsyncReviewListLoader(this, mSwipeRefreshLayout, aid, reviewList).execute()); // retry loading

mSwipeRefreshLayout.setColorSchemeColors(getResources().getColor(R.color.myAccentColor));
mSwipeRefreshLayout.setOnRefreshListener(() -> {
// reload all
reviewList = new ReviewList();
mAdapter = null;
new AsyncReviewListLoader(this, mSwipeRefreshLayout, aid, reviewList).execute();
});

// load initial content
new AsyncReviewListLoader(this, mSwipeRefreshLayout, aid, reviewList);
new AsyncReviewListLoader(this, mSwipeRefreshLayout, aid, reviewList).execute();
}

@Override
Expand All @@ -137,6 +142,18 @@ public boolean onOptionsItemSelected(MenuItem menuItem) {
return super.onOptionsItemSelected(menuItem);
}

ReviewItemAdapter getAdapter() {
return mAdapter;
}

void setAdapter(ReviewItemAdapter adapter) {
this.mAdapter = adapter;
}

RecyclerView getRecyclerView() {
return mRecyclerView;
}

void showRetryButton() {
mLoadingStatusTextView.setText(getResources().getString(R.string.system_parse_failed));
mLoadingButton.setVisibility(View.VISIBLE);
Expand All @@ -152,6 +169,12 @@ void hideListLoading() {
mLoadingLayout.setVisibility(View.GONE);
}

@Override
public void onItemClick(View view, int position) {
// TODO
Toast.makeText(NovelReviewListActivity.this, "Clicked " + position, Toast.LENGTH_SHORT).show();
}

private class MyOnScrollListener extends RecyclerView.OnScrollListener {
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
Expand All @@ -162,10 +185,10 @@ public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
pastVisibleItems = mLayoutManager.findFirstVisibleItemPosition();

// 剩余3个元素的时候就加载
if (visibleItemCount + pastVisibleItems + 3 >= totalItemCount) {
if (!isLoading.get() && visibleItemCount + pastVisibleItems >= totalItemCount) { // can be +1/2/3 >= total
// load more toast
Snackbar.make(mRecyclerView, getResources().getString(R.string.list_loading)
+ "(" + Integer.toString(reviewList.getCurrentPage()) + "/" + reviewList.getTotalPage() + ")",
+ "(" + Integer.toString(reviewList.getCurrentPage() + 1) + "/" + reviewList.getTotalPage() + ")",
Snackbar.LENGTH_SHORT).show();

// load more thread
Expand Down Expand Up @@ -230,27 +253,28 @@ protected void onPostExecute(Void v) {
// refresh everything when required
if (!runOrNot) return;

// met net work issue, show retry button
NovelReviewListActivity tempActivity = novelReviewListActivityWeakReference.get();
if (metNetworkIssue) {
// met net work issue, show retry button
if (tempActivity != null) tempActivity.showRetryButton();
return;
} else {
// all good, update list
if (tempActivity.getAdapter() == null) {
ReviewItemAdapter reviewItemAdapter = new ReviewItemAdapter(reviewList);
tempActivity.setAdapter(reviewItemAdapter);
reviewItemAdapter.setOnItemClickListener(tempActivity);
tempActivity.getRecyclerView().setAdapter(reviewItemAdapter);
}
tempActivity.getAdapter().notifyDataSetChanged();

tempActivity.hideListLoading();
}

// all good, update list
// TODO: for each item, set the the new action
// todo:
// if (mAdapter == null) {
// mAdapter = new NovelItemAdapter(listNovelItemInfo);
// mAdapter.setOnItemClickListener(LatestFragment.this);
// mAdapter.setOnItemLongClickListener(LatestFragment.this);
// mRecyclerView.setAdapter(mAdapter);
// }
// mAdapter.notifyDataSetChanged();

tempActivity.hideListLoading();
// stop spinning
SwipeRefreshLayout tempSwipeLayout = swipeRefreshLayoutWeakReference.get();
if (tempSwipeLayout != null) tempSwipeLayout.setRefreshing(false);

// reset loading status
isLoading.set(false);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@
public class SearchActivity extends AppCompatActivity implements MyItemClickListener, MyItemLongClickListener {

// private vars
// private LinearLayout searchContainer = null;
private EditText toolbarSearchView = null;
private SearchHistoryAdapter adapter = null;
private List<String> historyList = null;
Expand All @@ -48,7 +47,6 @@ protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.layout_search);

// bind views
// searchContainer = (LinearLayout)findViewById(R.id.search_container);
toolbarSearchView = findViewById(R.id.search_view);
View searchClearButton = findViewById(R.id.search_clear);

Expand Down Expand Up @@ -146,7 +144,6 @@ private void refreshHistoryList() {

@Override
public void onItemClick(View view, final int position) {
//Toast.makeText(this,postion+"",Toast.LENGTH_SHORT).show();
if(position < 0 || position >= historyList.size()) {
// ArrayIndexOutOfBoundsException
Toast.makeText(this, "ArrayIndexOutOfBoundsException: " + position + " in size " + historyList.size(), Toast.LENGTH_SHORT).show();
Expand All @@ -158,24 +155,19 @@ public void onItemClick(View view, final int position) {
}

@Override
public void onItemLongClick(View view, final int postion) {
//Toast.makeText(this, postion + ": Long Click Detected", Toast.LENGTH_SHORT).show();
public void onItemLongClick(View view, final int position) {
new MaterialDialog.Builder(this)
.callback(new MaterialDialog.ButtonCallback() {
@Override
public void onPositive(MaterialDialog dialog) {
super.onPositive(dialog);
GlobalConfig.deleteSearchHistory(historyList.get(postion));
refreshHistoryList();
}
.onPositive((ignored1, ignored2) -> {
GlobalConfig.deleteSearchHistory(historyList.get(position));
refreshHistoryList();
})
.theme(Theme.LIGHT)
.backgroundColorRes(R.color.dlgBackgroundColor)
.contentColorRes(R.color.dlgContentColor)
.positiveColorRes(R.color.dlgPositiveButtonColor)
.negativeColorRes(R.color.dlgNegativeButtonColor)
.title(getResources().getString(R.string.dialog_content_delete_one_search_record))
.content(historyList.get(postion))
.content(historyList.get(position))
.contentGravity(GravityEnum.CENTER)
.positiveText(R.string.dialog_positive_likethis)
.negativeText(R.string.dialog_negative_preferno)
Expand Down

0 comments on commit c457c69

Please sign in to comment.