专题列表增加上拉加载,资讯大图处理,游戏列表优化

This commit is contained in:
khy
2016-07-18 18:27:36 +08:00
parent e0c08e94f3
commit f0f12cf8ff
12 changed files with 125 additions and 24 deletions

View File

@ -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;
}
}