Android listview 增删改查代码实例
程序员文章站
2022-08-12 19:13:03
ListView
ListView可以用于展示列表数据,配合嵌入列表的控件,可以实现各种复杂的逻辑.
我查到的资料里对ListView的使用大部分是显示固定的列表,少有谈及...
ListView
ListView可以用于展示列表数据,配合嵌入列表的控件,可以实现各种复杂的逻辑. 我查到的资料里对ListView的使用大部分是显示固定的列表,少有谈及ListView的动态 修改.这里大致总结下怎么动态增删改查列表备忘. ListView类似于链表,每个单元对应一个view. 单元的创建需要Adapter,包含了单元的构造和事件的监听. 比如一个单元可能包括一个TextView和一个Button控件, Adapter负责构造单元里的控件并监听控件的事件.
整合listview逻辑
从程序设计的角度来看,listview的操作最好是独立封装成一个类. 所以应该自定义adapter继承BaseAdapter. Adapter完全可以抽象成ListView控件的proxy,对ListView的操作都 通过Adapter实现.
示例代码
1. 定义单元控件(xml描述) 在工程中加入xml文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="https://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 2. 定义adapter public class PeerListAdapter extends BaseAdapter{ private final String tag = "Online Peer list:"; private ArrayList<String> mList; private Context mContext; private LayoutInflater mInflater; public PeerListAdapter(Context context) { super(); mContext = context;//保存上下文(也就是对应的MainActivity) mInflater = LayoutInflater.from(mContext); mList = new ArrayList<String>(); mList.add(tag); this.notifyDataSetChanged(); } public void addPeer(String peer) { mList.add(peer); this.notifyDataSetChanged(); } public void reset() { mList.clear(); } @Override public View getView(final int i, View view, ViewGroup viewGroup) { if (view == null) { view = mInflater.inflate(R.layout.peerlist_view, null); } TextView textView = view.findViewById(R.id.text); textView.setText(mList.get(i)); Button button = (Button)view.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String msg = mList.get(i); Log.d("sliver", msg); Toast.makeText(mContext, msg, Toast.LENGTH_SHORT); } }); return view; } @Override public int getCount() { return mList.size(); } @Override public Object getItem(int i) { return null; } @Override public long getItemId(int i) { return 0; } @Nullable @Override public CharSequence[] getAutofillOptions() { return new CharSequence[0]; } } 3. activity中调用adapter refresh_button是自定义的按钮 用来触发添加单元到listview的动作 public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private ArrayList<String> mListData; private ListView mList; private PeerListAdapter mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mAdapter = new PeerListAdapter(this); mList = (ListView)findViewById(R.id.peer_list); mList.setAdapter(mAdapter); Button refresh_bt = (Button)findViewById(R.id.refresh_button); refresh_bt.setOnClickListener(this); } @Override public void onClick(View view) { Log.d("sliver", "button on"); mAdapter.addPeer("sliver"); } }
下一篇: 帧中继(Frame Relay)介绍
推荐阅读
-
Android listview ExpandableListView实现多选,单选,全选,edittext实现批量输入的实例代码
-
Android 自定义弹性ListView控件实例代码(三种方法)
-
android listview的多列模版实例代码
-
Android Listview中显示不同的视图布局详解及实例代码
-
Android ListView 滚动条的设置详解及实例代码
-
Android ListView 滚动条的设置详解及实例代码
-
编写Java代码对HDFS进行增删改查操作代码实例
-
Android--SQLite(增,删,改,查)操作实例代码
-
android ListView内数据的动态添加与删除实例代码
-
java使用DOM对XML文档进行增删改查操作实例代码