Android 入门ListView 的基本使用,BaseAdapter的编写
来源:互联网 发布:淘宝买刺刀 编辑:程序博客网 时间:2024/06/05 14:34
大家好我是Miko,今天给大家讲解一下ListView的基本使用,包括Layout的编写,BaseAdapter以及如何实现触摸响应
入门简介,大神勿喷=-=
- layout布局
- BaseAdaper的编写
- 触摸响应
- MainActivity
一、layout布局
在layout中我们要编写主界面的布局,除此之外我们还要有一个Item,代表每行的布局
首先是main_activity
<?xml version="1.0" encoding="utf-8"?><RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.miko.zd.listviewtest.MainActivity"> <ListView android:id="@+id/lv_main" android:layout_width="match_parent" android:layout_height="match_parent"></ListView></RelativeLayout>
然后是item
<?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"> <TextView android:id="@+id/tv_key" android:layout_width="0dp" android:layout_weight="1" android:layout_height="50dp" android:gravity="center"/> <TextView android:id="@+id/tv_value" android:layout_width="0dp" android:layout_weight="1" android:layout_height="50dp" android:gravity="center"/></LinearLayout>
ok很简单这样我们的布局就完成了
二、Adapter的实现 & 三、触摸listener的编写
ListView要与List<>数据绑定必须要有一个Adapter,Adapter的种类有很多,这里只是解释最基本的一种,baseAdapter
public class MyAdapter extends BaseAdapter { Context context; ArrayList<HashMap<String, Object>> arrayList; TextView textkey; TextView textvalue; MyAdapter(Context context,ArrayList<HashMap<String, Object>> arrayList) { this.context=context; this.arrayList = arrayList; } @Override public int getCount() { return arrayList.size(); } @Override public Object getItem(int position) { return arrayList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { convertView=View.inflate(context,R.layout.list_item,null); textkey= (TextView) convertView.findViewById(R.id.tv_key); textvalue= (TextView) convertView.findViewById(R.id.tv_value); textkey.setText(arrayList.get(position).get("key").toString()); textvalue.setText(arrayList.get(position).get("value").toString()); convertView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context,arrayList.get(position).get("value").toString(),Toast.LENGTH_LONG).show(); } }); return convertView; }}
我们创建一个类继承于BaseAdapter,必须要引用其中的一些方法
@Overridepublic int getCount() { return arrayList.size();}
这个函数返回list的大小,也就是数组的长度
@Override public Object getItem(int position) { return arrayList.get(position); }
@Overridepublic long getItemId(int position) { return position;}
这两个方法可实现也可直接返回空
最重要的就是下面的方法
@Override public View getView(final int position, View convertView, ViewGroup parent) { convertView=View.inflate(context,R.layout.list_item,null); textkey= (TextView) convertView.findViewById(R.id.tv_key); textvalue= (TextView) convertView.findViewById(R.id.tv_value); textkey.setText(arrayList.get(position).get("key").toString()); textvalue.setText(arrayList.get(position).get("value").toString()); convertView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context,arrayList.get(position).get("value").toString(),Toast.LENGTH_LONG).show(); } }); return convertView; }
convertView=View.inflate(context,R.layout.list_item,null); 这一句用来找到list_item
找到之后我们才能findviewbyId
四、MainActivity
private void initData() { list = new ArrayList<>(); for (int i = 0; i < 30; i++) { HashMap<String, Object> hashmap = new HashMap<>(); hashmap.put("key","第"+i+"行: "); hashmap.put("value"," "+(char)('a'+i)); list.add(hashmap); } } private void initEvent() { } private void intiView() { listView = (ListView) findViewById(R.id.lv_main); myAdapter = new MyAdapter(this, list); listView.setAdapter(myAdapter); }
0 0
- Android 入门ListView 的基本使用,BaseAdapter的编写
- ListView之BaseAdapter的基本使用
- Android 的ListView及其BaseAdapter的使用
- ListView -- BaseAdapter的使用
- listview的使用----BaseAdapter
- ListView+BaseAdapter的使用
- Android杂谈--ListView之BaseAdapter的使用
- Android杂谈--ListView之BaseAdapter的使用
- Android ListView 和 BaseAdapter 的使用
- Android杂谈--ListView之BaseAdapter的使用
- Android BaseAdapter(Spinner,ListView,GridView)的使用
- Android ListView之BaseAdapter的使用
- 【Android】使用BaseAdapter实现复杂的ListView
- Android杂谈--ListView之BaseAdapter的使用
- Android杂谈--ListView之BaseAdapter的使用
- android ListView之BaseAdapter的使用方式
- Android杂谈--ListView之BaseAdapter的使用
- Android杂谈--ListView之BaseAdapter的使用
- 读书笔记--《高效能程序员的修炼》
- 11. Container With Most Water
- MonoBehaviour lifecycle and leaks explained
- 开源网络准入系统(open source Network Access Control system)
- poj-2388-Who's in the Middle
- Android 入门ListView 的基本使用,BaseAdapter的编写
- 新内核版本ioctl的变化 _IO, _IOR, _IOW, _IOWR 幻数的理解
- 负载均衡与集群之apache+tomcat
- git git bash git shell的区别
- myeclipse2015逆向工程错误An internal error occurred during: "Generating Artifacts". java.lang.NullPointerE
- 广播的概念与定义广播接收者
- 初识Ajax
- 链表与数组的优点
- vs数据库访问出现Object reference not set to an instance of an object. 错误解决办法