国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

ListView 單條item刷新

2019-11-09 15:03:24
字體:
供稿:網(wǎng)友
listView列表刷新某一條數(shù)據(jù)時采用notifyDataSetChanged()代價有點高,最好能局部刷新。局部刷新的重點是,找到要更新的那項的View,然后再根據(jù)業(yè)務(wù)邏輯更新數(shù)據(jù)即可。大概就是3步:1.找到要更新的那條數(shù)據(jù)的item 對于的view因為listView條目的復(fù)用,所以當(dāng)前點擊的位置對應(yīng)的條目為position-FirstVisiblePosition2.獲取該item中對于的相關(guān)View ,修改相關(guān)view顯示的值3.獲取該item中對于的相關(guān)View ,修改相關(guān)view顯示的值舉個例子:
public class ListAdapter extends BaseAdapter{    PRivate List<Person> mList;    private Context mContext;    private int count=0;    public ListAdapter(List<Person> list) {        mList = list;    }    @Override    public int getCount() {        return mList!=null?mList.size():0;    }    @Override    public Object getItem(int position) {        return mList.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        count++;        Log.d("getView被調(diào)用的次數(shù)===",count+"");        mContext=parent.getContext();        ViewHolder holder=null;        if(convertView==null){            holder=new ViewHolder();            convertView= LayoutInflater.from(mContext).inflate(R.layout.list_item,parent,false);            holder.mTextView= (TextView) convertView.findViewById(R.id.tv);            convertView.setTag(holder);        }else{            holder= (ViewHolder) convertView.getTag();        }        String s = mList.get(position).getName();        holder.mTextView.setText(s);        return convertView;    }    private static class ViewHolder{        TextView mTextView;    }}
public class Person {    private String name;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}
public class MainActivity extends AppCompatActivity {    private ListView mListView;    private List<Person> mList=new ArrayList<>();    private ListAdapter mAdapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        initData();        setListener();    }    private void setListener() {        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                int firstVisiblePosition = mListView.getFirstVisiblePosition(); //屏幕內(nèi)當(dāng)前可以看見的第一條數(shù)據(jù)                if(position-firstVisiblePosition>=0){                    //1.獲取當(dāng)前點擊的條目的view                    View itemView = mListView.getChildAt(position - firstVisiblePosition);                    //2.查找出相應(yīng)的控件                    TextView textView= (TextView) itemView.findViewById(R.id.tv);                    //3.更新ui                    textView.setText("我是更新后的數(shù)據(jù)"+position);                    //4.更新數(shù)據(jù)源                   mList.get(position).setName("我是更新后的數(shù)據(jù)"+position);                }            }        });    }    private void initData() {        Person person=null;        for (int i = 0; i < 30; i++) {            person=new Person();            person.setName("條目"+i);            mList.add(person);        }        mAdapter=new ListAdapter(mList);        mListView.setAdapter(mAdapter);    }    private void initView() {        mListView= (ListView) findViewById(R.id.lv);    }}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 思茅市| 延津县| 班玛县| 桂林市| 华宁县| 玉田县| 乐业县| 城口县| 菏泽市| 林周县| 武安市| 湟中县| 岢岚县| 临朐县| 扶风县| 轮台县| 上虞市| 策勒县| 大同县| 武城县| 夏津县| 石景山区| 肥西县| 丹棱县| 永善县| 鹤壁市| 商洛市| 连州市| 太谷县| 浪卡子县| 宜黄县| 巴中市| 九寨沟县| 旬阳县| 南安市| 肥乡县| 枣阳市| 虎林市| 镇平县| 彭州市| 浦城县|