Знам, че този въпрос е задаван преди и разбрах приблизително какво се случва, но не мога да намеря решение.
В моя персонализиран адаптер за списък и вътре в public View getView(int position, View convertView, ViewGroup parent) {
съм настроил функция за щракване за елементите ImageButton.
final ImageButton bookmark = (ImageButton)
convertView.findViewById(R.id.bookmarkthis);
bookmark.setTag(position);
bookmark.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bookmark.setImageResource(R.drawable.ic_bookmarked);
bookmark.setTag(R.drawable.ic_bookmarked);
}
});
Бутонът за изображение е ясна звезда и когато се щракне върху него, той се променя на жълта звезда. Работи добре.
Проблемът е, че когато щракна върху Елемент в позиция 0 икона със звезда, за да стане жълто, това също се променя за елемент 8 по-надолу в списъка, който все още не е в Изглед. ако щракна позиция 1 се променя и за позиция 9 и т.н.
Огледах наоколо и проучих проблема и дори опитах държач за Imagebutton, но не се получи. Нещо пречи на промяната с възможност за рисуване за ImageButton само до правилната му позиция.
Благодаря
Решение е първоначално да зададете елемент с флаг в масива за всеки елемент. След това onClick задайте флага на true само за този елемент. След това в getView това е просто случай на оператор if за проверка на флага, докато елементите се циклират.
//in array creation
items.setFlag("false");
//in getView as you set Text and what ever get the Flag state
String flag = m.getFlag();
//check the flag state and take action in this case change the icon accordingly
if (Objects.equals(flag, "true")) {
bookmark.setImageResource(R.drawable.ic_bookmarked);
bookmark.setTag(R.drawable.ic_bookmarked);
}
else {
bookmark.setImageResource(R.drawable.ic_bookmark);
}
// and in the click function
@Override
public void onClick(View v) {
bookmark.setImageResource(R.drawable.ic_bookmarked);
m.setFlag("true");
}
getView
. - person Buddy   schedule 22.09.2015