ListView 单条item刷新
来源:互联网 发布:国际软件学院英文 编辑:程序博客网 时间:2024/05/21 12:39
listView列表刷新某一条数据时采用notifyDataSetChanged()代价有点高,最好能局部刷新。局部刷新的重点是,找到要更新的那项的View,然后再根据业务逻辑更新数据即可。
3.获取该item中对于的相关View ,修改相关view显示的值
举个例子:
大概就是3步:
1.找到要更新的那条数据的item 对于的view
因为listView条目的复用,所以当前点击的位置对应的条目为position-FirstVisiblePosition
2.获取该item中对于的相关View ,修改相关view显示的值
3.获取该item中对于的相关View ,修改相关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被调用的次数===",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(); //屏幕内当前可以看见的第一条数据 if(position-firstVisiblePosition>=0){ //1.获取当前点击的条目的view View itemView = mListView.getChildAt(position - firstVisiblePosition); //2.查找出相应的控件 TextView textView= (TextView) itemView.findViewById(R.id.tv); //3.更新ui textView.setText("我是更新后的数据"+position); //4.更新数据源 mList.get(position).setName("我是更新后的数据"+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); }}
1 0
- ListView 单条item刷新
- Android ListView 实现单条刷新
- ListView单条刷新的方法
- ListView高效刷新——刷新单条数据
- ListView高效刷新——刷新单条数据
- ListView刷新指定item
- ListView刷新单个item
- listview单个刷新item
- listview 刷新某一个item
- listView刷新单个Item
- listView item 部分刷新
- ListView刷新单个Item
- listview 刷新部分item
- android ListView 单条刷新方法实践及原理解析
- android ListView 单条刷新方法实践及原理解析
- 【android】ListView 单条刷新方法实践及原理解析
- Android ListView 单条刷新方法实践及原理解析
- Android ListView 单条刷新方法实践及原理解析
- 来杭州一周年
- Android Glide图片框架使用
- 查看函数库.a函数符号信息
- spring4.1+shiro1.2.3+quartz2.2.1
- 《计算机视觉中的数学方法》
- ListView 单条item刷新
- 算法提高 矩阵链乘
- mp3转pcm
- 获取元素CSS值之getComputedStyle方法熟悉
- Installation failed with message INSTALL_CANCELED_BY_USER.
- kafka主要配置
- (转)php中session过期时间设置
- OpenGL ES
- java并发编程之lock锁