ListView/RecyclerView的item中有进度条的处理
来源:互联网 发布:上课玩手机神器淘宝 编辑:程序博客网 时间:2024/06/06 01:16
之所以特意提出是有进度条的情况,是因为进度条刷新的频率非常高,如果是在进度刷新的时候调用notifyDataSetChanged或者notifyItemChanged方法虽然可以实现刷新,但是界面会频繁的闪烁!所以这个时候最好的办法就是拿到要刷新的item的对应的控件,比如要刷新的进度条的引用。
我的方法是这样的:以recyclerview为例。
给ViewHolder添加一个int类型的position属性,其实就是给ViewHolder一个标记、一个索引,方便我们通过这个position来找到对应的ViewHolder对象。在adapter中维护个map,其中key是adapter中的position,value是holder的position,这样我们就能根据我们要刷新的item的position拿到ViewHolder对象对应的position。同时我们将所有的ViewHolder保存到一个集合中,一般adapter创建的viewholder的数量是同一时间最多显示的item个数加2,然后就是复用,这个想必大家都很清楚。当我们需要刷新某个position对应的item的进度条的时候,我们就可以拿到该position上的进度条的引用,然后直接更新,而不需要刷新整个item!代码如下:
class MyAdapter extends RecyclerView.Adapter<MyViewHolder> { HashMap<Integer, Integer> map = new HashMap<>(); ArrayList<MyViewHolder> mHolders = new ArrayList<>(); int count = 0; @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { count++; MyViewHolder myViewHolder = new MyViewHolder(View.inflate(getApplicationContext(), R.layout .recycler_item_2, null), count); mHolders.add(myViewHolder); return myViewHolder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { map.put(position, holder.position); holder.mTvIndex.setText(mList.get(position)); holder.mPb.setProgress(15); } @Override public int getItemCount() { return mList.size(); } }
0 0
- ListView/RecyclerView的item中有进度条的处理
- 动态增加 ListView 的 item,且 item 中有 EditText
- ListView 中 item的事件处理
- Recyclerview item中有EditText使用刷新遇到的坑!!!!!
- recyclerview中有edittext的处理
- 关于listview的item中如果有textview,listview点击item没有效果的解决办法
- listview的复杂item处理
- listview的复杂item处理
- ListView的item中有CheckBox焦点冲突
- Listview中某个item需要有倒计时的方案
- Listview的item中有button类导致onitemclick无效
- listView的item中有checkbox,导致setOnItemClick失效
- RecyclerView的Item和Item内的控件点击处理
- 当listview的item的布局中有Button等可点击按钮时,item的点击事件与Button的点击事件处理
- ListView中含有多个item布局的处理
- listview的item中edittext与进度条出现问题的解决办法;
- Listview、RecyclerView中的item中包含可以点击的控件,点击冲突解决办法
- databinding listview/RecyclerView的item布局文件中如何加载res中的图片
- 自然数幂和
- UWP之C++/CX开发
- 杭电2647Reward
- cdoj 1322 柱爷把妹(吃惊高清重制版)
- ZooKeeper实现分布式队列Queue
- ListView/RecyclerView的item中有进度条的处理
- poj 1426 Find The Multiple(bfs+同余定理)
- linphone-LinphoneFriendImpl文件对应的JNI层文件分析
- 1.2.3.1 ISO/OSI参考模型
- poj3041
- android之SharedPreferences简介
- (三)、转义字符
- HDU 5800 To My Girlfriend
- A class file was not written解决方法