【发布时间】:2019-01-09 16:37:30
【问题描述】:
从活动中更改 RecyclerView 项目颜色。
我已经通过实现适配器回调接口来处理回收器视图项的点击。我还将adapterPosition传递给活动中的回调函数以进行条件检查。
MyActivitiy 类
@Override
public void onSideAClicked(List<Faq> dataList, int itemPosition) {
sideA_ID = dataList.get(itemPosition).getId();
positionA = itemPosition + 1;
sideAisClicked = true;
if (checkIfMatched())
// Here checkIfMatched() is true then set new color to recyclerview item at position itemPosition or if possible make the item non clickable
}
MyAdapter 类
public class SideARecyclerViewAdapter extends RecyclerView.Adapter<SideARecyclerViewAdapter.ViewHolder> {
SideAAdapterCallback callback;
private Context context;
private List<Faq> faqList;
public SideARecyclerViewAdapter(Context context, List<Faq> faqList, SideAAdapterCallback sideAAdapterCallback) {
this.context = context;
this.faqList = faqList;
this.callback = sideAAdapterCallback;
}
public interface SideAAdapterCallback {
void onSideAClicked(List<Faq> dataList, int position);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.activity_list_items, viewGroup,false);
ViewHolder mh = new ViewHolder(v);
return mh;
}
@Override
public void onBindViewHolder(final ViewHolder viewHolder, final int i) {
viewHolder.faq_position.setText((i + 1) + "");
viewHolder.faq_question.setText(faqList.get(i).getQuestion());
}
@Override
public int getItemCount() {
return (null != faqList ? faqList.size() : 0);
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private TextView faq_position;
private TextView faq_question;
public ViewHolder(View view) {
super(view);
this.faq_position = (TextView) view.findViewById(R.id.faq_position);
this.faq_question = (TextView) view.findViewById(R.id.faq_question);
this.itemView.setClickable(true);
this.itemView.setOnClickListener(this);
}
@Override
public void onClick(View view) {
int position = getAdapterPosition();
if (callback != null) {
callback.onSideAClicked(faqList, position);
}
}
}
// 这里如果 checkIfMatched() 返回 true 然后为 recyclerview 项设置新颜色 在 itemPosition 位置,或者如果可能,使该项目不可点击
【问题讨论】:
标签: android callback android-recyclerview