Android Listview制定属于自己的适配器,完美解决数据刷新等问题!
2017-09-20 00:03
633 查看
废话不说,先粘贴出我写的基类
//接下来关键来了
如何写自己的Adapter呢,很简单,继承下就好了,然后贴出我需要用到的Adapter
写好自己的适配器就要初始化适配器和为适配器设置数据了
至此,你自己的adapter就可以加载出数据了
但是,假如你想把adapter的数据都清除掉怎么办?
type_adapter.clear();
假设,你想刷新下数据该怎么写?
type_adapter.clear();
type_adapter.addItem(sucess);
对,就这么写,先把adapter的旧数据删掉,再加载新数据!
如果还有新需求,请自行参考我自己写的父类,活学活用,至此完美解决数据刷新结束 !
我的QQ:2973901695,欢迎互相交流!
/** * Adapter基类 * * @author 智江鹏 * @version 1.0 */ public abstract class Base_Z_Adapter extends android.widget.BaseAdapter { /** * 数据存储集合 **/ public List<Object> mDataList = new ArrayList<Object>(); /** * Context上下文 **/ /** * 日志输出标志 **/ protected final String TAG = this.getClass().getSimpleName(); public Base_Z_Adapter() { } @Override public int getCount() { Log.e("777","77"+ mDataList.size()); return mDataList.size(); } @Override public Object getItem(int position) { if (position < mDataList.size()) return mDataList.get(position); else return null; } @Override public long getItemId(int position) { return position; } /** * 添加数据 */ public boolean addItem(Object object) { return mDataList.add(object); } /** * 在指定索引位置添加数据 * * @param location 索引 * @param object 数据 */ public void addItem(int location, Object object) { mDataList.add(location, object); } /** * 集合方式添加数据 * * @param collection 集合 */ public boolean addItem(Collection<? extends Object> collection) { boolean b = mDataList.addAll(collection); notifyDataSetChanged(); return b; } public List<Object> getdate() { return mDataList; } /** * 在指定索引位置添加数据集合 * * @param location 索引 * @param collection 数据集合 */ public boolean addItem(int location, Collection<? extends Object> collection) { return mDataList.addAll(location, collection); } /** * 移除指定对象数据 * * @param object 移除对象 * @return 是否移除成功 */ public boolean removeItem(Object object) { return mDataList.remove(object); } /** * 移除指定索引位置对象 * * @param location 删除对象索引位置 * @return 被删除的对象 */ public Object removeItem(int location) { return mDataList.remove(location); } /** * 移除指定集合对象 * * @param collection 待移除的集合 * @return 是否移除成功 */ public boolean removeAll(Collection<? extends Object> collection) { return mDataList.removeAll(collection); } /** * 清空数据 */ public void clear() { mDataList.clear(); }
//接下来关键来了
如何写自己的Adapter呢,很简单,继承下就好了,然后贴出我需要用到的Adapter
/** * Created by 他的猫 on 2017/8/21. * 消息中心适配器 */ public class Type_Adapter extends Base_Z_Adapter { @Override public View getView(int position, View convertView, ViewGroup parent) { Type_Adapter.Holder holder = null; // 查找控件 if (null == convertView) { convertView = LayoutInflater.from(BaseApplication.getInstance()) .inflate(R.layout.tab_item_type, null); holder = new Type_Adapter.Holder(); holder.dh = (TextView) convertView .findViewById(R.id.dh); holder.pjwd = (TextView) convertView .findViewById(R.id.pjwd); holder.smsj = (TextView) convertView .findViewById(R.id.smsj); // 缓存Holder convertView.setTag(holder); } else { holder = (Type_Adapter.Holder) convertView.getTag(); } //这儿就需要注意了,这儿强转化的类名是需要我接下来要传的哦! signType_Bean.SucessBean nrowDataeme = (signType_Bean.SucessBean) getItem(position); //拿到这个bean,就可以往适配器上设置数据了 holder.pjwd.setText(nrowDataeme.getSignName()); return convertView; } public class Holder { TextView dh; TextView pjwd; TextView smsj; }
写好自己的适配器就要初始化适配器和为适配器设置数据了
Type_Adapter type_adapter; List<signType_Bean.SucessBean> sucess; //新建一个适配器对象 type_adapter = new Type_Adapter(); //设置给listview spinner.setAdapter(type_adapter); initview(); //用我自己封装的Okhttp去请求数据,博客中有介绍 API.signType(new Okhttp.Objectcallback() { @Override public void onsuccess(String st) { Log.e("8888", st); //拿到数据后用我封装的JSONUtils解析一下,博客中有介绍 signType_Bean signType_bean = JSONUtils.parseJSON(st, signType_Bean.class); sucess = signType_bean.getSucess(); if (sucess.size() > 0) { TYpe = sucess.get(0).getSignName(); //关键来了,往adapter中加入数据,只需要addItem type_adapter.addItem(sucess); } } @Override public void onFalia(int code, String errst) { Log.e("8888", "网络错误"); } });
至此,你自己的adapter就可以加载出数据了
但是,假如你想把adapter的数据都清除掉怎么办?
type_adapter.clear();
假设,你想刷新下数据该怎么写?
type_adapter.clear();
type_adapter.addItem(sucess);
对,就这么写,先把adapter的旧数据删掉,再加载新数据!
如果还有新需求,请自行参考我自己写的父类,活学活用,至此完美解决数据刷新结束 !
我的QQ:2973901695,欢迎互相交流!
相关文章推荐
- 完美解决Android里面scrollview嵌套及listview嵌套viewpager的滑动冲突问题的简单方法
- android ListView 刷新数据,加载时遇到的数组越界问题
- android listview 异步加载图片时出现图片错位、刷新问题的简单解决
- [Android算法] 解决ListView里嵌套CheckBox出现的数据刷新问题
- Android listview&gridview getview 方法多次调用问题解决方法 并附上单页加载实现问卷调查适配器源代码
- Android圆角ListView并完美解决和ScrollView共存问题
- Android 解决Listview条目里面有Edittext数据错乱问题
- Android ListView数据错乱问题解决
- listview分页加载刷新——--填充数据,适配器更新与UI同步更新问题
- android完美解决ListView中CheckBox的全选、反选、批量删除的问题
- Android中ListView数据使用sAdapter.notifyDataSetChanged();方法不刷新的问题
- Android圆角ListView并完美解决和ScrollView共存问题
- android完美解决ClickableSpan中点击后ListView中item的长按冲突的问题
- PullToRefreshScrollView下拉刷新、上啦加载更多、里面并解决与ListView数据加载问题(需要PullToReFerensh库)
- 完美解决android:ScrollView嵌套ListView的问题 .
- Android:完美解决listview的setonitemclicklistener 和 setontouchlistener冲突问题
- 在适配器的构造方法添加假数据,然后请求数据后listview等的图片显示不完整,刷新之后才显示的问题。
- 完美解决Android在listview添加checkbox实现批量操作问题
- 完美解决Android在listview添加checkbox实现单选多选操作问题
- 解决android expandablelistview 里面嵌入gridview行数据重复问题