Я создаю пользовательский просмотр списка с любимыми функциями, но я не знаю, как изменить фон избранного изображения на клик. Когда я просто меняю фон любимого значка, он автоматически меняет фон другого любимого фонового изображения во время прокрутки. Пожалуйста, проверьте ниже код:Динамическое изменение фона элемента настраиваемого списка
public class CustomArrayAdapter extends BaseAdapter {
private Activity activity;
private LayoutInflater inflater = null;
ArrayList<Customlist> list;
DecimalFormat formatter = new DecimalFormat("#,##,###");
public CustomArrayAdapter(Activity a, ArrayList<Customlist> list) {
activity = a;
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.list = list;
}
public int getCount() {
return list.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView,
final ViewGroup parent) {
TextView txt_unit, txt_state, txt_price, term_left, customr;
TextView install_date;
final ImageView fav;
View view = convertView;
if (convertView == null)
view = inflater.inflate(R.layout.list_item, null);
customr = (TextView) view.findViewById(R.id.customr);
txt_state = (TextView) view.findViewById(R.id.txt_state);
install_date = (TextView) view.findViewById(R.id.install_date);
term_left = (TextView) view.findViewById(R.id.term_left);
txt_price = (TextView) view.findViewById(R.id.txt_price);
fav = (ImageView) view.findViewById(R.id.fav);
txt_unit = (TextView) view.findViewById(R.id.txt_unit);
fav.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// fav = (ImageView)v.findViewById(R)
fav.setBackgroundResource(R.drawable.favourite_select);
Toast.makeText(activity, "click", 1).show();
}
});
// set values
customr.setText(list.get(position).getCUSTOMER());
txt_state.setText(list.get(position).getSTATE_NAME());
install_date.setText(list.get(position).getINSTALL_DATE());
term_left.setText(list.get(position).getTREM_LEFT());
String price = formatter.format(Integer.parseInt(list.get(position)
.getRUPEES()));
return view;
}
}
все еще получает то же problem.What я должен изменить в своем коде? Это срочно. final ViewHolder viewHolder = new ViewHolder(); \t \t if (convertView == null) { \t \t \t view = inflater.inflate (R.layout.list_item, null); } else { \t \t view = convertView; \t \t \t ((ViewHolder) view.getTag()). Fav.setTag (list.get (position)); \t \t} –
см. Ответ SilentKnight. Он создал ViewHolder. Вам необходимо создать класс ViewHolder и включить в него все представления вашего настраиваемого элемента списка, а затем соответствующим образом выполнить реализацию в getView. –
Я знаю, что это очень распространенная и простая проблема, но да, я создал класс ViewHolder и добавил все представления внутри класса владельца. Я не знаю, что я делаю неправильно? У меня есть попытка обновить вид списка, поэтому он будет содержать фоновый рисунок изображения той же позиции? –