Android 入门ListView 的基本使用,BaseAdapter的编写

来源:互联网 发布:淘宝买刺刀 编辑:程序博客网 时间:2024/06/05 14:34

大家好我是Miko,今天给大家讲解一下ListView的基本使用,包括Layout的编写,BaseAdapter以及如何实现触摸响应
入门简介,大神勿喷=-=

  1. layout布局
  2. BaseAdaper的编写
  3. 触摸响应
  4. 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
原创粉丝点击