Я пытаюсь (около 4 дней) изменить вид конкретного элемента списка. Я попробовал множество решений, которые были доступны, и хотя этот вопрос может выглядеть «DUPLICATE», но я постарался на моем уровне лучше всего реализовать все решения, но все равно не повезло.Как изменить/обновить элемент списка списка?
Итак, вот мой вопрос, у меня есть вид списка, который создается с помощью адаптированного адаптера, который расширяет BaseAdapter
.
Теперь, что должно произойти, так это то, что согласно состояниям изображение в определенном элементе списка должно быть изменено.
Вот код:
Просмотр списка инициализация:
nowPlayingListView = (ListView) findViewById(R.id.nowPlayingListView);
nowPlayingListViewAdapter = new NowPlayingListViewAdapter(this, songsList);
nowPlayingListView.setAdapter(nowPlayingListViewAdapter);
Здесь манипуляции в соответствии с состоянием:
public void handleSelectedState(Drawable dr) {
int currentPosition=getPosition();
View singLeListItem = getViewByPosition(currentPosition, nowPlayingListView);
ImageButton imgButton = (ImageButton) findViewById(R.id.npListViewSingleImageButton);
int count = ((ViewGroup) singLeListItem).getChildCount();
for (int i = 0; i < count; i++) {
View nextChild = ((ViewGroup) singLeListItem).getChildAt(i);
try {
//Log.d("Loop", count + "" + nextChild.getTag() + nextChild.getTag().equals("linearLayoutImageButton"));
if (nextChild.getTag().equals(getResources().getString(R.string.NPSingleItemLinearLayoutImgButton))) {
imgButton = (ImageButton) ((ViewGroup) nextChild).getChildAt(0);
imgButton.setImageDrawable(null);
imgButton.setImageDrawable(dr);
break;
}
} catch (Exception e) {
}
}
}
public View getViewByPosition(int pos, ListView listView) {
final int firstListItemPosition = listView.getFirstVisiblePosition();
final int lastListItemPosition = firstListItemPosition + listView.getChildCount() - 1;
if (pos < firstListItemPosition || pos > lastListItemPosition) {
return listView.getAdapter().getView(pos, null, listView);
} else {
final int childIndex = pos - firstListItemPosition;
return listView.getChildAt(childIndex);
}
}
Я пытался делать adpater.notifydatasetchanged
метод после вытяжки изображений установлена но ничего не происходит.
Также код работает только для элементов списка, которые видны, но это не то, что мне нужно. Я хочу обновить изменения в элементах списка, которые также не отображаются.
Спасибо.
Это лучшее, что можно изменить адаптером для управления этими состояниями. – Pooya
Что именно вы подразумеваете под этим? –