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

} }

 

 

 

 

 

 

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