recycleview无法正常工作?
我在Android和现在recyclerview新的工作,我想改变recycleview第3项的颜色为蓝色是这样的:recycleview无法正常工作?
- item0(默认)
- 物品1(默认)
- ITEM2(默认)
- 项目3(蓝色)
- ITEM4(默认)
。 。 。 所以,我写下代码,但不幸的是,当我滚动列表我得到这个结果!
@Override
public void onBindViewHolder(vh holder, int position) {
Contacts example = contacts.get(position);
holder.first_name.setText(example.name);
holder.last_name.setText(example.last_name);
if (position == 3){
holder.first_name.setTextColor(Color.BLUE);
}
}
我真的很困惑。谢谢你的帮助 。
在RecyclerView
中,视图被重新使用。一个项目的视图将在滚动后用于另一个项目。所以在这种情况下,多个视图的颜色会发生变化。
解决方法是在else条件中将颜色更改为默认值。
if (position == 3) {
holder.first_name.setTextColor(Color.BLUE);
} else {
holder.first_name.setTextColor(Color.BLACK);
}
谢谢你的工作!但我不确切知道“View”在android中的含义。你可以帮我吗 ?? – user8583428
很高兴我能帮到你。另外不要忘记提高答案。在android中,View是所有UI元素的基类。 –
// adapter.java ===>
public class Adapter extends RecyclerView.Adapter<Adapter.vh> {
private List<Contacts> contacts;
public Adapter(List<Contacts> contacts) {
this.contacts = contacts;
}
public class vh extends RecyclerView.ViewHolder {
protected TextView first_name;
protected TextView last_name;
protected ImageView Image;
public vh(View v) {
super(v);
first_name = (TextView) v.findViewById(R.id.first);
last_name = (TextView) v.findViewById(R.id.last);
Image = (ImageView) v.findViewById(R.id.imageView);
}
}
@Override
public Adapter.vh onCreateViewHolder(ViewGroup parent, int viewType) {
Log.d("creat",String.valueOf(viewType));
Log.d("creat",String.valueOf(parent));
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.row,parent,false);
Log.d("View",String.valueOf(v));
return new vh(v);
}
@Override
public void onBindViewHolder(vh holder, int position) {
Contacts example = contacts.get(position);
holder.first_name.setText(example.name);
holder.last_name.setText(example.last_name);
if (position == 3){
holder.first_name.setTextColor(Color.BLUE);
}
}
@Override
public int getItemCount() {
Log.d("Item","ItemCount");
return contacts.size();
}}
用于数据源的接触类:Contacts.java ==>
public class Contacts {
public String name;
public String last_name;
public Contacts(String name, String last_name) {
this.name = name;
this.last_name = last_name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLast_name() {
return last_name;
}
public void setLast_name(String last_name) {
this.last_name = last_name;
}}
和ma在活动:ListActivity.java ==>
public class ListActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
List<Contacts> l = new ArrayList<>();
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
l.add(new Contacts("Alireza","Akbari"));
l.add(new Contacts("Akbari","Alireza"));
RecyclerView rv = (RecyclerView) findViewById(R.id.recycler_view);
Adapter cAdapter = new Adapter(l);
rv.setAdapter(cAdapter);
LinearLayoutManager lm = new LinearLayoutManager(this);
lm.setOrientation(LinearLayoutManager.VERTICAL);
rv.setLayoutManager(lm);
}}
Recyclerview重用视图..
你可以简单地通过添加 '其他'
if (position == 3){
holder.first_name.setTextColor(Color.BLUE);
}
else{
holder.first_name.setTextColor(Color.RED);
}
谢谢你的工作! – user8583428
发表您的完整适配器代码修复 –
你是不是回收您的视图。发布完整代码 –