避免listView滚动刷新getview
来源:互联网 发布:卢宇彤 知乎 编辑:程序博客网 时间:2024/06/13 10:48
缓存ListView行中的 View
listView 在每次仅绘制可视范围内的item,这样当你滚动listview的实际上他是动态加载的。
避免listView滚动刷新getView,所以就需要缓存ListView 中item中的view。
具体实现如下:
定义ViewCache
Java代码
- import android.view.View;
- public class ViewCache {
- private View baseView;
- public ViewCache() {
- }
- public ViewCache(View baseView) {
- this.baseView = baseView;
- }
- public View getBaseView() {
- return baseView;
- }
- public void setBaseView(View baseView) {
- this.baseView = baseView;
- }
- }
定义ListAdapter
Java代码
- import java.util.List;
- import org.json.JSONArray;
- import org.json.JSONException;
- import com.Practice.ui.R;
- import com.Practice.util.ViewCache;
- import android.content.Context;
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.BaseAdapter;
- import android.widget.ListView;
- import android.widget.TextView;
- public class ListAdapter extends BaseAdapter {
- private ListView listView;
- private LayoutInflater mInflater;
- private List list;
- public static final String TAG = "ListAdapter";
- public ListAdapter(Context paramContext, ListView paramListView,
- List paramList) {
- listView = paramListView;
- list = paramList;
- mInflater = (LayoutInflater) paramContext
- .getSystemService("layout_inflater");
- }
- @Override
- public int getCount() {
- return list.size();
- }
- @Override
- public Object getItem(int position) {
- return list.get(position);
- }
- @Override
- public long getItemId(int position) {
- return list.get(position).getId();
- }
- @Override
- public View getView(int position, View view, ViewGroup parent) {
- ViewCache viewCache = new ViewCache();
- JSONArray positionArray;
- if (view != null) {
- // 使用缓存获取view
- viewCache = (ViewCache) view.getTag();
- view = viewCache.getBaseView();
- Log.i(TAG, "使用viewCache");
- } else {
- view = mInflater.inflate(R.layout.item, null);
- //设置缓存
- viewCache.setBaseView(view);
- //设置view 的tag为viewCache
- view.setTag(viewCache);
- Log.i(TAG, "创建view");
- }
- return view;
- }
- }
listView 在每次仅绘制可视范围内的item,这样当你滚动listview的实际上他是动态加载的。
避免listView滚动刷新getView
private List<View> viewCache = new ArrayList<View>();
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
// 文章列表页面的每个Item
if (viewCache.size() > position) {
view = viewCache.get(position);
if (view != null)
return view;
}
view = 构建的view
return view;
}
- 避免listView滚动刷新getview
- ListView 刷新:getView 被调用多次
- android中ListView滚动刷新
- android中ListView滚动刷新
- android中ListView滚动刷新
- listview下拉刷新 滚动加载
- 关于listview滚动不停getView()的问题~~已解决~
- android ListView下拉刷新疯狂调用getView 解决办法
- android中ListView多次刷新重复执行getView的解决方法
- android ListView下拉刷新疯狂调用getView 解决办法
- listview添加了headview时刷新的问题 HeadViewAdapter.getView
- Android中ListView多次刷新重复执行getView的解决方法
- android中ListView多次刷新重复执行getView的解决方法
- Android ListView嵌套ListView、滚动刷新数据
- 40_AsyncTask实现ListView刷新滚动
- Android ListView避免在GetView时数据发生变化导致找不到元素的Bug
- [Android] ListView中getView的原理+如何在ListView中放置多个item + android中ListView多次刷新多次重复执行getView的问题另解
- ListView的getView
- 几道关于计数的趣题
- IE6,IE7,IE8 css bug汇总以及兼容解决方法
- mysql备份一句话
- linux下nexus的配置
- 缓存ListView行中的 View
- 避免listView滚动刷新getview
- UVa 10622 - Perfect P-th Powers
- jQuery调用AJAX时Get和post公用的乱码解决方法
- nfc学习笔记
- use cmd's /l* <logfile> to get its log.
- 查看apk签名信息
- 有关正则表达式 测试下
- One or more breakpoints cannot be set and have been disabled...
- Could not find the main class: Error exist in required project(s);