我正在嘗試(約4天)來更改特定列表視圖項目的視圖。我嘗試了很多可用的解決方案,雖然這個問題看起來可能是「重複的」,但我已盡最大努力實施所有解決方案,但仍然沒有運氣。如何更改/更新列表視圖的單個列表項?
所以這裏是我的問題,我有一個列表視圖,它是通過使用延伸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
你究竟是什麼意思? –