Android ListView优化之局部刷新(非notifyDataSetChanged()方式)

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

} }

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章