android listView-simpleadapter(点击事件)

来源:互联网 发布:ios好玩的网络游戏知乎 编辑:程序博客网 时间:2024/05/20 20:37

androidListView是展现数据用到最多的一个组件,也是非常非常重要的一个组件,在android开发当中基本上处处都可以看到,例如,大家常用到的QQ,网页,等等一些客户端基本上就是有listView组成的。在这里我介绍的是simpleadapter来生成listView。这个是用到最多的。因为在做listView,这个可以生成一些复杂的listView组件。

       这个和其他的组件有点不同,那就是这个组件,我们一般会写一个模板来做。

首先我们来定义一个模板。

<?xmlversion="1.0"encoding="utf-8"?>

<TableLayout

  xmlns:android="http://schemas.android.com/apk/res/android"

  android:layout_width="fill_parent"

  android:layout_height="wrap_content">

  <TableRow>

  <TextView

        android:id="@+id/simpleName"

        android:textSize="15px"

        android:gravity="center_vertical"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"/>

      <TextView

        android:id="@+id/simpleSex"

        android:textSize="15px"

        android:gravity="center_vertical"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"/>

  </TableRow>

</TableLayout>

这个模板就是在你的listview中每一行显示的布局。我们用的是表格布局

 

下面我们定义我们的主页面的布局

<?xmlversion="1.0"encoding="utf-8"?>

<LinearLayout

  xmlns:android="http://schemas.android.com/apk/res/android"

  android:orientation="vertical"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  >

  <TextViewandroid:layout_width="fill_parent"

         android:layout_height="wrap_content"

         android:textSize="25px"

         android:gravity="center_horizontal"

         android:text="simpleadapter"/>

  <ListViewandroid:id="@+id/simpleAdapterId"

         android:layout_width="fill_parent"

         android:layout_height="wrap_content"/>

</LinearLayout>

这里你会看到一个listview 这个就是和上面模板布局进行关联的。这个关联我们要在代码中实现

 

   private SimpleAdaptersimpleAdapter=null;

   private List<Map<String, String>>list=new ArrayList<Map<String,String>>();

   private ListViewlistView=null;

   protectedvoid onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);

      super.setContentView(R.layout.mylistviewtwo);

      this.listView=(ListView)super.findViewById(R.id.simpleAdapterId);

      this.simpleAdapter =new SimpleAdapter(this,this.getData(),

           R.layout.data_list,new String[]{"name","sex"},newint[]{

                 R.id.simpleName, R.id.simpleSex });

      this.listView.setAdapter(this.simpleAdapter);

   }

  

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

      for(int i=0;i<20;i++){

        Map<String,String>map=new HashMap<String, String>();

        map.put("name","bruce"+i);

        map.put("sex","");

        this.list.add(map);

       

      }

      returnthis.list;

   }

 

在这里你会看到很多其他的类SimpleAdapter这个就是listview装载数据的一个类。this.simpleAdapter = new SimpleAdapter(this,this.getData(),

           R.layout.data_list,new String[]{"name","sex"},newint[]{

                 R.id.simpleName, R.id.simpleSex });

      this.listView.setAdapter(this.simpleAdapter);

   }

这个就是它的实现,它会有5个参数,第一个是上下文,第二个是它的数据源

这个数据源我们一般用List<Map<String, String>> 这个格式。第三个就是我们的模板,第4个是我们的List<Map<String, String>>mapkey第五个是我们模板要放数据的位置的id必须是和第4个参数一一对应,这样我们的数据也能相应的放对位置。这个做完,我们就把模板,数据,一一对应的着到的位置,放在了SimpleAdapter中。接下来就是我们要和主布局的listview进行绑定,这样就很简单的。this.listView.setAdapter(this.simpleAdapter);

这样我们的listview就做好了。

 在做这个的时候,一定要注意,模板,主页的布局,要不然就显示不出数据了。

 

下面我说个简单的点击事件。

 

this.listView.setOnItemClickListener(new OnItemClickListener(){

        publicvoid onItemClick(AdapterView<?> adapter, View view,int position,

              long id) {

  

      这个里面用到最多的就是position这个就是你选择的是哪个行。在这里面你就可以做表格点击事件进行操作了。

 

 

}});