android ListView用法

ListView使我们在显示大量数据时。可以按照我们的意愿自己定义布局方式,并且还为我们定义了listView的事件,OnItemClickListener,OnItemLongClickListener(listener)

OnItemSelectedListener(listener)等常用的事件,我们也可以继承它父类的方法事件,然后重写事件,我们就可以做出优美的效果,像QQ通讯录,微信等。必要时我们可以查看api去实现我们所需要的方法。在此我们将说listView常用的适配器有ArrayAdapter,SimpleAdapter,SimpleCursorAdapter,必要时我们可以自定义适配器。

我们比较常用SimpleAdapter,SimpleCursorAdapter和自定义Adapter。SimpleAdapter的方法SimpleAdapter(context, data, resource, from, to)中的参数content,表示上下文,就是你这个Activity,data是内部继承Map结构的List,resource表示资源,你自己定义的子布局,from是你要显示data内部Map的对应键,to表示titile显示对应的TextView。

SimpleCursorAdapter 的方法new SimpleCursorAdapter(context, layout, c, from, to)中参数c是Cursor类型的数据(注意,我们在使用SimpleCursorAdapter时需要在数据库的主键字段设为_id 或将查询的id字段用引用名 如 personId as _id(id小写)),常用于显示是数据库的数据。

在此我们一SimpleAdapter为例看一下实现listView。


类:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;


public class ListViewDemoActivity extends Activity
{
/** Called when the activity is first created. */

private ListView listView ;

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

listView = (ListView)findViewById(R.id.listView);

SimpleAdapter adapter = new SimpleAdapter(this,  getData(), R.layout.item, new String[]{"bianhao","name","age"},
new int[]{R.id.bianhao,R.id.name,R.id.age});
listView.setAdapter(adapter);

listView.setOnItemClickListener(new OnItemClickListener()
{

/*
* parant 表示的是哪一行listView
* view 是你的子布局 RelativeLayout
* position和id是相等的
*/

public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{

ListView lsListView = (ListView)parent;
HashMap<String, String> hashMap = (HashMap<String, String>) parent.getItemAtPosition(position);

Toast.makeText(ListViewDemoActivity.this, hashMap.get("bianhao")+ hashMap.get("name"), Toast.LENGTH_SHORT).show();

}
});
}


private List<HashMap<String, String>> getData()
{


List<HashMap<String, String>> data = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map = new HashMap<String, String>();
map.put("bianhao", "编号");
map.put("name", "姓名");
map.put("age", "年龄");
data.add(map);
map = new HashMap<String, String>();
map.put("bianhao", "123");
map.put("name", "小张");
map.put("age", "123");
data.add(map);
map = new HashMap<String, String>();
map.put("bianhao", "123");
map.put("name", "小张");
map.put("age", "123");
data.add(map);
map = new HashMap<String, String>();
map.put("bianhao", "123");
map.put("name", "小张");
map.put("age", "123");
data.add(map);

return data;
}
}

//main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
   
    <ListView android:id="@+id/listView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:cacheColorHint="#000000"></ListView>
 
</LinearLayout>


//item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >


    <TextView
        android:id="@+id/bianhao"
       android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:padding="15dip"
        android:text="@string/hello" />


    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/age"
        android:layout_centerInParent="true"
        android:layout_toRightOf="@+id/bianhao"
        android:padding="15dip"
        android:text="@string/hello" />






    <TextView
        android:id="@+id/age"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
        android:padding="15dip"
        android:layout_alignParentRight="true"
        android:text="@string/hello" />


</RelativeLayout>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值