213 lines
8.2 KiB
Java
213 lines
8.2 KiB
Java
package com.gh.gamecenter.adapter;
|
|
|
|
import android.content.Context;
|
|
import android.support.v4.content.ContextCompat;
|
|
import android.support.v7.widget.RecyclerView;
|
|
import android.text.TextUtils;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.widget.TextView;
|
|
|
|
import com.gh.base.OnListClickListener;
|
|
import com.gh.common.constant.ItemViewType;
|
|
import com.gh.common.util.ImageUtils;
|
|
import com.gh.gamecenter.R;
|
|
import com.gh.gamecenter.adapter.viewholder.AskSelectGameItemViewHolder;
|
|
import com.gh.gamecenter.adapter.viewholder.FooterViewHolder;
|
|
import com.gh.gamecenter.adapter.viewholder.ReuseViewHolder;
|
|
import com.gh.gamecenter.ask.entity.AskGameSelectEntity;
|
|
import com.gh.gamecenter.ask.entity.CommunitiesGameEntity;
|
|
import com.gh.gamecenter.ask.entity.MeEntity;
|
|
import com.gh.gamecenter.baselist.ListAdapter;
|
|
import com.gh.gamecenter.manager.UserManager;
|
|
|
|
import java.util.List;
|
|
|
|
/**
|
|
* Created by khy on 6/12/17.
|
|
*/
|
|
|
|
public class AskSelectGameAdapter extends ListAdapter<AskGameSelectEntity> {
|
|
|
|
private OnListClickListener mListClickListener;
|
|
|
|
private int mTitlePosition;
|
|
|
|
private String mCommunityId;
|
|
|
|
|
|
public AskSelectGameAdapter(Context context, OnListClickListener listClickListener) {
|
|
super(context);
|
|
mListClickListener = listClickListener;
|
|
mCommunityId = UserManager.getInstance().getCommunityId(mContext);
|
|
}
|
|
|
|
@Override
|
|
protected void provideListData(List<AskGameSelectEntity> listData) {
|
|
mEntityList.addAll(listData);
|
|
for (int i = 0; i < mEntityList.size(); i++) {
|
|
AskGameSelectEntity entity = mEntityList.get(i);
|
|
if (TextUtils.isEmpty(entity.getStatus())) {
|
|
mEntityList.remove(i);
|
|
i--;
|
|
}
|
|
}
|
|
for (int i = 0; i < mEntityList.size(); i++) {
|
|
AskGameSelectEntity entity = mEntityList.get(i);
|
|
if (i == 0) {
|
|
AskGameSelectEntity e = new AskGameSelectEntity();
|
|
if ("opened".equals(entity.getStatus())) {
|
|
e.setId("已开通");
|
|
mEntityList.add(i, e);
|
|
i++;
|
|
} else {
|
|
e.setId("投票中");
|
|
mEntityList.add(i, e);
|
|
break;
|
|
}
|
|
} else {
|
|
AskGameSelectEntity lastEntity = mEntityList.get(i - 1);
|
|
String status = entity.getStatus();
|
|
if (!TextUtils.isEmpty(status) && !status.equals(lastEntity.getStatus())) { // 已开通/投票中 断点
|
|
mTitlePosition = i - 1;
|
|
AskGameSelectEntity e = new AskGameSelectEntity();
|
|
e.setId("投票中");
|
|
mEntityList.add(i, e);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
notifyDataSetChanged();
|
|
}
|
|
|
|
@Override
|
|
public int getItemViewType(int position) {
|
|
if (position == getItemCount() - 1) {
|
|
return ItemViewType.ITEM_FOOTER;
|
|
}
|
|
|
|
AskGameSelectEntity entity = mEntityList.get(position);
|
|
if ("投票中".equals(entity.getId()) || "已开通".equals(entity.getId())) {
|
|
return ItemViewType.ITEM_TOP;
|
|
} else {
|
|
return ItemViewType.ITEM_BODY;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
|
View view;
|
|
switch (viewType) {
|
|
case ItemViewType.ITEM_BODY:
|
|
view = mLayoutInflater.inflate(R.layout.ask_selectgame_item, parent, false);
|
|
return new AskSelectGameItemViewHolder(view, mEntityList, mListClickListener);
|
|
case ItemViewType.ITEM_FOOTER:
|
|
view = mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false);
|
|
return new FooterViewHolder(view, null, mListClickListener);
|
|
case ItemViewType.ITEM_TOP:
|
|
view = mLayoutInflater.inflate(R.layout.ask_selectgame_title_item, parent, false);
|
|
return new ReuseViewHolder(view, null, mListClickListener);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
|
|
AskGameSelectEntity entity;
|
|
switch (getItemViewType(position)) {
|
|
case ItemViewType.ITEM_BODY:
|
|
AskSelectGameItemViewHolder bodyHolder = (AskSelectGameItemViewHolder) holder;
|
|
entity = mEntityList.get(position);
|
|
CommunitiesGameEntity game = entity.getGame();
|
|
ImageUtils.Companion.display(bodyHolder.mIcon, game.getIcon());
|
|
|
|
if ("opened".equals(entity.getStatus())) {
|
|
bodyHolder.mName.setText(entity.getName());
|
|
bodyHolder.mVoteRl.setVisibility(View.GONE);
|
|
if (mCommunityId.equals(entity.getId())) {
|
|
bodyHolder.mSelecthint.setVisibility(View.VISIBLE);
|
|
} else {
|
|
bodyHolder.mSelecthint.setVisibility(View.GONE);
|
|
}
|
|
} else {
|
|
bodyHolder.mName.setText(game.getName());
|
|
bodyHolder.mSelecthint.setVisibility(View.GONE);
|
|
bodyHolder.mVoteRl.setVisibility(View.VISIBLE);
|
|
bodyHolder.mVotecount.setText(entity.getVote() + "票");
|
|
MeEntity me = entity.getMe();
|
|
if (me != null && me.isCommunityVoted()) {
|
|
bodyHolder.mVoteBtn.setBackgroundResource(R.drawable.border_suggest_bg);
|
|
bodyHolder.mVoteBtn.setTextColor(ContextCompat.getColor(mContext, R.color.content));
|
|
bodyHolder.mVoteBtn.setText(R.string.voted);
|
|
} else {
|
|
bodyHolder.mVoteBtn.setBackgroundResource(R.drawable.comment_border_bg);
|
|
bodyHolder.mVoteBtn.setTextColor(ContextCompat.getColor(mContext, R.color.theme));
|
|
bodyHolder.mVoteBtn.setText(R.string.vote);
|
|
}
|
|
}
|
|
|
|
break;
|
|
case ItemViewType.ITEM_FOOTER:
|
|
FooterViewHolder footerViewHolder = (FooterViewHolder) holder;
|
|
footerViewHolder.lineLeft.setVisibility(View.GONE);
|
|
footerViewHolder.lineRight.setVisibility(View.GONE);
|
|
if (mIsNetworkError) {
|
|
footerViewHolder.loading.setVisibility(View.GONE);
|
|
footerViewHolder.hint.setText(R.string.loading_failed_retry);
|
|
} else if (mIsOver) {
|
|
footerViewHolder.loading.setVisibility(View.GONE);
|
|
footerViewHolder.hint.setText(R.string.ask_game_suggestion);
|
|
} else {
|
|
footerViewHolder.loading.setVisibility(View.VISIBLE);
|
|
footerViewHolder.hint.setText(R.string.loading);
|
|
}
|
|
break;
|
|
case ItemViewType.ITEM_TOP:
|
|
entity = mEntityList.get(position);
|
|
ReuseViewHolder topHolder = (ReuseViewHolder) holder;
|
|
if (topHolder.itemView instanceof TextView) {
|
|
((TextView) topHolder.itemView).setText(entity.getId());
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public int getItemCount() {
|
|
return mEntityList == null || mEntityList.isEmpty() ? 0 : mEntityList.size() + FOOTER_ITEM_COUNT;
|
|
}
|
|
|
|
public int getTitlePosition() {
|
|
return mTitlePosition;
|
|
}
|
|
|
|
public boolean isOver() {
|
|
return mIsOver;
|
|
}
|
|
|
|
public void resetCommunityId(String id) {
|
|
mCommunityId = id;
|
|
notifyDataSetChanged();
|
|
}
|
|
|
|
public void voteSuccess(String communityId) {
|
|
for (AskGameSelectEntity entity : mEntityList) {
|
|
if (communityId.equals(entity.getId())) {
|
|
MeEntity me = entity.getMe();
|
|
if (me == null) me = new MeEntity();
|
|
me.setCommunityVoted(true);
|
|
entity.setMe(me);
|
|
entity.setVote(entity.getVote() + 1);
|
|
notifyDataSetChanged();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void postCommunitiesSuccess(AskGameSelectEntity entity) {
|
|
mEntityList.add(entity);
|
|
notifyDataSetChanged();
|
|
}
|
|
}
|