【发布时间】:2016-01-09 12:02:16
【问题描述】:
我一直在处理RecyclerView,当用户单击某个项目时,我希望更改 recyclerview 面板。出于简单测试的目的,我在点击时将 recyclerview 项目的文本设置为红色。单击正确,但是当我滚动RecyclerView 时,其他项目随机变为红色。这些随机项目没有被点击,当我滚动时它们自己变成红色。我认为我的问题应该出在onClick 方法中。
public class interestAdapter extends RecyclerView.Adapter<interestAdapter.MyViewHolder> {
private LayoutInflater inflater;
private Context context;
public ArrayList<String> data = new ArrayList();
public static MyViewHolder.ViewHolderClick click;
//public static MyViewHolder.ViewHolderClick click;
public interestAdapter(Context context, ArrayList<String> objects) {
this.context = context;
inflater = LayoutInflater.from(context);
for(int i = 0; i < objects.size(); i++) {
data.add(objects.get(i));
}
}
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.interestpanel, parent, false);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
public int getItemCount() {
return data.size();
}
public void setClickListener(MyViewHolder.ViewHolderClick clicker) {
this.click = clicker;
}
public void onBindViewHolder(MyViewHolder holder, int position) {
String current = data.get(position);
holder.category.setText(current);
}
static class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { //implements View.onClickListener {
TextView category;
public MyViewHolder(View itemView) {
super(itemView);
//itemView.setOnClickListener(this);
category = (TextView) itemView.findViewById(R.id.category);
category.setOnClickListener(this);
}
@Override
public void onClick(View v) {
MyViewHolder holder = new MyViewHolder(v);
holder.category.setTextColor(Color.RED);
}
public TextView getCate() {
return category;
}
public static interface ViewHolderClick {
public void clicked(View view, int position);
}
}
} `
【问题讨论】:
-
您应该保留对已单击项目的引用!。 stackoverflow.com/questions/30167929/… 那应该有帮助
标签: android onclick android-recyclerview