1.adapter只會去調用對應position的getView()方法來對界面進行刷新了,
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
notifyDataSetChanged(position, listView);
} });
private void notifyDataSetChanged(int position, ListView listView) {
int firstVisiblePosition = listView.getFirstVisiblePosition();//獲得可見的第一個item的position
int lastVisiblePosition = listView.getLastVisiblePosition();//獲得可見的最後一個item的position
if (position >= firstVisiblePosition && position <= lastVisiblePosition) {
View view = listView.getChildAt(position - firstVisiblePosition);
adapter.getView(position, view, listView);
} }
2.直接通過view.getTag() 方法得到ViewHolder對象,然後就可以修改我們所希望的控件了。
private void notifyDataSetChanged(int position, ListView listView) {
int firstVisiblePosition = listView.getFirstVisiblePosition(); //獲得可見的第一個item的position
int lastVisiblePosition = listView.getLastVisiblePosition(); //獲得可見的最後一個item的position
if (position >= firstVisiblePosition && position <= lastVisiblePosition) {
ListViewAdapter.ViewHolder holder = (ListViewAdapter.ViewHolder) listView.getChildAt(position - firstVisiblePosition).getTag(); holder.tvItem.setText(dataList.get(position));
} }