У меня есть ListView
и я заселена, что ListView
с TextView
и кнопки с помощью пользовательских adapter.I было генерироваться событие щелчка для этого Button
custom adapter
в этом .В случае щелчка я пытаюсь измените текст и цвет кнопки, вплоть до этого его рабочий тон, но когда я прокручиваю ListView
вверх и вниз, цвет текста другой кнопки меняется. Я должен был остановиться здесь в последнюю пару дней ...Текст кнопки в ListView пункта изменяется при прокрутке
public class CustomAdapter extends BaseAdapter {
Activity a;
ArrayList<String> Rollno;
ArrayList<String> Stdname;
ArrayList<String> Stdstatus;
public CustomAdapter(Activity a, ArrayList<String> rollno, ArrayList<String> stdname, ArrayList<String> stdstatus) {
this.a = a;
Rollno = rollno;
Stdname = stdname;
Stdstatus = stdstatus;
}
@Override
public int getCount() {
return Rollno.size();
}
@Override
public Object getItem(int position) {
return Rollno.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public class ViewHolder{
TextView rollno,name;
Button status;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder viewHolder=new ViewHolder();
LayoutInflater li=a.getLayoutInflater();
View v=li.inflate(R.layout.custom,parent,false);
viewHolder.rollno=(TextView)v.findViewById(R.id.crollno);
viewHolder.name=(TextView)v.findViewById(R.id.cname);
viewHolder.status=(Button)v.findViewById(R.id.btn1);
viewHolder.rollno.setText(Rollno.get(position));
viewHolder.name.setText(Stdname.get(position));
viewHolder.status.setText(Stdstatus.get(position));
viewHolder.status.setTag(0);
viewHolder.status.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final int status1 = (Integer) v.getTag();
if (status1 == 1) {
viewHolder.status.setText("P");
viewHolder.status.setBackgroundColor(Color.GREEN);
v.setTag(0);
} else if (status1 == 2) {
viewHolder.status.setText("A");
viewHolder.status.setBackgroundColor(Color.RED);
v.setTag(1);
} else if (status1 == 3) {
viewHolder.status.setText("L");
viewHolder.status.setBackgroundColor(Color.BLUE);
v.setTag(2);
} else {
viewHolder.status.setText("H");
viewHolder.status.setBackgroundColor(Color.YELLOW);
v.setTag(3);
}
}
});
return v;
}
}
У вас есть эта проблема, потому что ListView повторно использует ячейки и, таким образом, отображается состояние предыдущей ячейки. Вам нужно сохранить содержимое кнопки где-нибудь и проверить состояние в '' 'getView'''. – danypata
Как я могу сохранить состояние кнопки. Я новичок в android, могу дать мне этот код. Спасибо заранее за вашу помощь – Ajinkya