Adapter类型控件之ListView的数据更新问题
2016-06-25 22:30
323 查看
(一)概述
(二)listview的数据更新
(1)先写一个正常的demon
entity类:Data.java
自定义的BaseAdapter—–MyAdapter.java
activity_main.xml
item_list.xml
MainActivity.java
在activity_main.xml中添加
MainActivity.java中的bindViews()方法中添加
运行结果如下:
(三)添加一条数据
添加一个按钮,我们每按一次就添加一条记录
运行效果图:
代码实现
在我们自定义的BaseAdapter中添加方法:
在MainActivty.java中添加:
activity_main.xml
哇哈哈~~~向ListView中添加一条数据就是这么任性+简单,如果你想在Listview的特定位置插入一条数据,同理可以在Adapter中添加:
然后,添加一个按钮,写一个事件,搞定!
运行结果:
(四)删除某一项
然后加俩个Button,然后这样:
运行结果:
(五)移除所有的记录:
(六)更新某一个记录
即可;
如果你觉得对你有帮助的话就帮我点个赞吧~<完>
(二)listview的数据更新
(1)先写一个正常的demon
entity类:Data.java
public class Data { private int ImgId; private String content; public Data() {} public Data(int newImgId , String newcontent) { this.ImgId = newImgId; this.content = newcontent; } public int getImgId() { return ImgId; } public void setImgId(int imgId) { ImgId = imgId; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
自定义的BaseAdapter—–MyAdapter.java
public class MyAdapter extends BaseAdapter { private Context mContext; private LinkedList<Data> mDatas; public MyAdapter(){} public MyAdapter(LinkedList<Data> mDatas , Context mContext ){ this.mContext = mContext; this.mDatas = mDatas; } @Override public int getCount() { return mDatas.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = null; if (convertView == null) { convertView = LayoutInflater.from(mContext).inflate(R.layout.item_list, null ,false); viewHolder = new ViewHolder(); viewHolder.img_icon = (ImageView) convertView.findViewById(R.id.img_icon); viewHolder.txt_content = (TextView) convertView.findViewById(R.id.txt_content); convertView.setTag(viewHolder); }else { viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.img_icon.setImageResource(mDatas.get(position).getImgId()); viewHolder.txt_content.setText(mDatas.get(position).getContent()); return convertView; } static class ViewHolder{ ImageView img_icon; TextView txt_content; } }
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.android_adapter_demon.MainActivity" > <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" > </ListView> </LinearLayout>
item_list.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <ImageView android:id="@+id/img_icon" android:layout_width="56dp" android:layout_height="56dp"/> <TextView android:id="@+id/txt_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="20dp" android:textSize="18sp" /> </LinearLayout>
MainActivity.java
public class MainActivity extends Activity { private ListView listView; private MyAdapter myAdapter=null; private List<Data> mDatas = null; private Context mContext=null; private TextView txt_empty; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mContext = MainActivity.this; mDatas = new LinkedList<Data>(); myAdapter = new MyAdapter((LinkedList<Data>) mDatas, mContext); bindViews(); } private void bindViews() { listView = (ListView) findViewById(R.id.listView1); txt_empty = (TextView) findViewById(R.id.txt_empty); listView.setAdapter(myAdapter); } }
在activity_main.xml中添加
<TextView android:id="@+id/txt_empty" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:textColor="#000000" android:textSize="15pt" />
MainActivity.java中的bindViews()方法中添加
listView = (ListView) findViewById(R.id.listView1); txt_empty = (TextView) findViewById(R.id.txt_empty); txt_empty.setText("暂无数据~"); listView.setAdapter(myAdapter); listView.setEmptyView(txt_empty);
运行结果如下:
(三)添加一条数据
添加一个按钮,我们每按一次就添加一条记录
运行效果图:
代码实现
在我们自定义的BaseAdapter中添加方法:
//添加一个元素 public void add(Data data){ if (mDatas == null) { mDatas = new LinkedList<>(); } mDatas.add(data); notifyDataSetChanged(); }
在MainActivty.java中添加:
public class MainActivity extends Activity implements OnClickListener{ private ListView listView; private MyAdapter myAdapter=null; private List<Data> mDatas = null; private Context mContext=null; //listview无数据时显示的TextView private TextView txt_empty; //向listView中添加一条数据 private Button btn_add; private int flag = 1; private Data mData_5 = null; //用来临时放对象的 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mContext = MainActivity.this; mDatas = new LinkedList<Data>(); myAdapter = new MyAdapter((LinkedList<Data>) mDatas, mContext); bindViews(); } private void bindViews() { listView = (ListView) findViewById(R.id.listView1); txt_empty = (TextView) findViewById(R.id.txt_empty); btn_add = (Button) findViewById(R.id.btn_add); txt_empty.setText("暂无数据~"); listView.setAdapter(myAdapter); listView.setEmptyView(txt_empty); btn_add.setOnClickListener((android.view.View.OnClickListener) this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn_add: if(flag == 5){ mData_5 = new Data(R.drawable.cat,"你瞅啥~^(* ̄(oo) ̄)^~X" + flag); myAdapter.add(mData_5); }else{ myAdapter.add(new Data(R.drawable.cat,"你瞅啥~^(* ̄(oo) ̄)^~X" + flag)); } flag++; break; } } }
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.android_adapter_demon.MainActivity" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Button android:id="@+id/btn_add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="添加一条记录" /> </LinearLayout> <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" > </ListView> <TextView android:id="@+id/txt_empty" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:textColor="#000000" android:textSize="15pt" /> </LinearLayout>
哇哈哈~~~向ListView中添加一条数据就是这么任性+简单,如果你想在Listview的特定位置插入一条数据,同理可以在Adapter中添加:
//往特定位置,添加一个元素 public void add(int position,Data data){ if (mData == null) { mData = new LinkedList<>(); } mData.add(position, data); notifyDataSetChanged(); }
然后,添加一个按钮,写一个事件,搞定!
btn_add2 = (Button) findViewById(R.id.btn_add2); btn_add2.setOnClickListener(this); case R.id.btn_add2: //position从0开始算的 myAdapter.add(1,new Data(R.drawable.cat,"瞅你咋地~^(* ̄(oo) ̄)^~X " + flag)); break;
运行结果:
(四)删除某一项
public void remove(Data data) { if(mData != null) { mData.remove(data); } notifyDataSetChanged(); } public void remove(int position) { if(mData != null) { mData.remove(position); } notifyDataSetChanged(); }
然后加俩个Button,然后这样:
case R.id.btn_remove: mAdapter.remove(mData_5); break; case R.id.btn_remove2: mAdapter.remove(2); break;
运行结果:
(五)移除所有的记录:
public void clear() { if(mData != null) { mData.clear(); } notifyDataSetChanged(); }
(六)更新某一个记录
即可;
如果你觉得对你有帮助的话就帮我点个赞吧~<完>
相关文章推荐
- 完美实现Android ListView中的TextView的跑马灯效果
- android上改变listView的选中颜色
- IE:添加编辑器
- “百度与站长”更新:关于网站收录,删除,seo等
- 用vbs删除某些类型文件和磁盘空间报告的脚本
- Delphi7中Listview的常用功能汇总
- Delphi控件ListView的属性及使用方法详解
- QQ聊天记录删除了怎么恢复简单方法
- Windows2003下批量添加和导出所有ip BAT脚本
- vbs删除注册表项的代码
- 迅速删除非法文件名的批处理代码
- 通过批处理实现删除运行、查找等处的历史记录的代码
- Shell中删除某些文件外所有文件的3个方法
- 删除文件提示文件正在被另一个人或程序使用的解决方法
- 关于.LDB文件 .ldb文件的产生 .ldb文件的删除方法
- asp 合并记录集并删除的sql语句
- SQLserver 数据库危险存储过程删除与恢复方法
- sql自增长设置与删除的深入分析
- MySQL删除数据库的两种方法
- 使用 Iisext.vbs 删除 Web 服务扩展文件的方法