专题列表增加上拉加载,资讯大图处理,游戏列表优化
This commit is contained in:
@ -27,6 +27,7 @@ import com.gh.download.DownloadEntry;
|
||||
import com.gh.gamecenter.GameDetailsActivity;
|
||||
import com.gh.gamecenter.R;
|
||||
import com.gh.gamecenter.SubjectActivity;
|
||||
import com.gh.gamecenter.adapter.viewholder.FooterViewHolder;
|
||||
import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder;
|
||||
import com.gh.gamecenter.adapter.viewholder.GameTestViewHolder;
|
||||
import com.gh.gamecenter.db.info.GameInfo;
|
||||
@ -65,8 +66,9 @@ public class SubjectAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
|
||||
private LinearLayout reuse_no_connection;
|
||||
|
||||
private List<GameEntity> list;
|
||||
|
||||
private boolean order;
|
||||
private static final int FOOTER_ITEM = 101;
|
||||
private boolean isLoaded;
|
||||
|
||||
// 黄壮华 获取引用 修改2015/8/15
|
||||
private ArrayMap<String, Integer> locationMap;
|
||||
@ -77,6 +79,12 @@ public class SubjectAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
|
||||
|
||||
private DismissEntity dismissEntity;
|
||||
|
||||
private int page = 1;
|
||||
private boolean isRemove;
|
||||
private boolean isNetworkError;
|
||||
private int per_page = 20;
|
||||
private String id;
|
||||
|
||||
public SubjectAdapter(Context context,
|
||||
RecyclerView recyclerView,
|
||||
ProgressBarCircularIndeterminate pbLoading,
|
||||
@ -100,14 +108,18 @@ public class SubjectAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
|
||||
DownloadItemUtils.initializeGameMap(context, gameMap);
|
||||
|
||||
list = new ArrayList<GameEntity>();
|
||||
isLoaded = false;
|
||||
isNetworkError = false;
|
||||
this.id = id;
|
||||
|
||||
initList(id);
|
||||
initList(page);
|
||||
}
|
||||
|
||||
private void initList(String id) {
|
||||
public void initList(final int page) {
|
||||
isLoaded =false;
|
||||
JsonArrayExtendedRequest request = new JsonArrayExtendedRequest(
|
||||
TimestampUtils.addTimestamp(Config.HOST
|
||||
+ "v1d50/game/column/" + id, Constants.GAME_CD),
|
||||
+ "v1d50/game/column/" + id +"?page="+ page, Constants.GAME_CD),
|
||||
new Response.Listener<JSONArray>() {
|
||||
|
||||
@Override
|
||||
@ -122,12 +134,19 @@ public class SubjectAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
|
||||
// 无网络连接
|
||||
if (error.getClass().equals(NoConnectionError.class)
|
||||
|| error.getClass().equals(TimeoutError.class)) {
|
||||
if (subject_pb_loading != null && subject_pb_loading.getVisibility() == View.VISIBLE) {
|
||||
subject_pb_loading.setVisibility(View.GONE);
|
||||
if (page == 1){
|
||||
if (subject_pb_loading != null && subject_pb_loading.getVisibility() == View.VISIBLE) {
|
||||
subject_pb_loading.setVisibility(View.GONE);
|
||||
}
|
||||
Toast.makeText(context, "网络错误", Toast.LENGTH_SHORT).show();
|
||||
subject_list.setVisibility(View.GONE);
|
||||
reuse_no_connection.setVisibility(View.VISIBLE);
|
||||
}else {
|
||||
Toast.makeText(context, "网络错误", Toast.LENGTH_SHORT).show();
|
||||
isNetworkError = true;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
Toast.makeText(context, "网络错误", Toast.LENGTH_SHORT).show();
|
||||
subject_list.setVisibility(View.GONE);
|
||||
reuse_no_connection.setVisibility(View.VISIBLE);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -149,7 +168,8 @@ public class SubjectAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
|
||||
entity.getId(), entity.getName()));
|
||||
}
|
||||
}
|
||||
list = gameList;
|
||||
list.addAll(gameList);
|
||||
|
||||
notifyItemRangeInserted(list.size() - gameList.size(), gameList.size());
|
||||
}
|
||||
|
||||
@ -165,20 +185,36 @@ public class SubjectAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
|
||||
if (subject_pb_loading != null && subject_pb_loading.getVisibility() == View.VISIBLE) {
|
||||
subject_pb_loading.setVisibility(View.GONE);
|
||||
}
|
||||
if (list.isEmpty() || gameList.size() < 20) {
|
||||
isRemove = true;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
isLoaded = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return list.size();
|
||||
if (list.size()<1){
|
||||
return 0;
|
||||
}
|
||||
return list.size()+1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemViewType(int position) {
|
||||
if (list.size() == position) {
|
||||
return FOOTER_ITEM;
|
||||
}
|
||||
return position;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
|
||||
if (i == FOOTER_ITEM){
|
||||
View view = LayoutInflater.from(viewGroup.getContext()).inflate(
|
||||
R.layout.refresh_footerview, viewGroup, false);
|
||||
return new FooterViewHolder(view);
|
||||
}
|
||||
if (list.get(i).getTest() != null) {
|
||||
View view = LayoutInflater.from(viewGroup.getContext()).inflate(
|
||||
R.layout.home_game_test_item, viewGroup, false);
|
||||
@ -196,6 +232,32 @@ public class SubjectAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
|
||||
initGameNormalViewHolder((GameNormalViewHolder) viewHolder, position);
|
||||
} else if (viewHolder instanceof GameTestViewHolder) {
|
||||
initGameTestViewHolder((GameTestViewHolder) viewHolder, position);
|
||||
} else if (viewHolder instanceof FooterViewHolder){
|
||||
initFooterViewHolder((FooterViewHolder) viewHolder);
|
||||
}
|
||||
}
|
||||
|
||||
private void initFooterViewHolder(FooterViewHolder viewHolder) {
|
||||
if (isNetworkError) {
|
||||
viewHolder.footerview_progressbar.setVisibility(View.GONE);
|
||||
viewHolder.footerview_tv_loading.setText("加载失败,点击重试");
|
||||
viewHolder.itemView.setClickable(true);
|
||||
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
isNetworkError = false;
|
||||
notifyDataSetChanged();
|
||||
initList(list.size()/per_page+1);
|
||||
}
|
||||
});
|
||||
} else if (isRemove) {
|
||||
viewHolder.footerview_progressbar.setVisibility(View.GONE);
|
||||
viewHolder.footerview_tv_loading.setText("加载完毕");
|
||||
viewHolder.itemView.setClickable(false);
|
||||
} else {
|
||||
viewHolder.footerview_progressbar.setVisibility(View.VISIBLE);
|
||||
viewHolder.footerview_tv_loading.setText("加载中...");
|
||||
viewHolder.itemView.setClickable(false);
|
||||
}
|
||||
}
|
||||
|
||||
@ -347,4 +409,8 @@ public class SubjectAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
|
||||
return dismissEntity;
|
||||
}
|
||||
|
||||
public boolean isLoaded(){
|
||||
return isLoaded;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user