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));
} }