美文网首页RecyclerView精选案例
工作中遇到的listview相关问题(二)——只更新某一个ite

工作中遇到的listview相关问题(二)——只更新某一个ite

作者: 又尔enter | 来源:发表于2017-03-17 09:41 被阅读37次

我们都知道,更新listview通常调用修改adapter的数据源,然后调用adapter的notifyDataSetChanged();

但是有时候只是需要更新某一个指定的item,比如微信聊天应用中。这个时候,我们不需要去调用Adapter的notifyDataSetChanged()方法。可以写一个updateItem(int position)的方法去更新指定项,这样代价就会小一些。

那么我们怎么拿到这个item然后去更新它的数据呢,其实listview提供了getChildAt(int index)方法让我们去获取,这个方法其实是ViewGroup的方法。并且由于一般使用了ViewHolder缓存机制,所以我们获取子item的时候要注意在可见区域的position去获取。

  public void updataItem(int position) {
        int firstVisiblePos = listView.getFirstVisiblePosition();
        int lastVisibalePos = listView.getLastVisiblePosition();
        if (position >= firstVisiblePos && position <= lastVisibalePos) {
            View view = listView.getChildAt(position - firstVisiblePos);
            ViewHolder viewHolder = (ViewHolder) view.getTag();
            //然后使用viewholder去更新需要更新的view。 
            //TextView textView = (TextView) viewHolder.findViewById(R.id.textView);
            //textView.setText("11111");
        }

    }

相关文章

网友评论

    本文标题:工作中遇到的listview相关问题(二)——只更新某一个ite

    本文链接:https://www.haomeiwen.com/subject/niasnttx.html