SimpleAdapter 的用法及点击事件中如何获取选中项的值

来源:互联网 发布:ubuntu glib版本 编辑:程序博客网 时间:2024/05/05 15:45

       SimpleAdapter的使用步骤及点击事件中如何获取选中项的值:

       一、首先我们需要先写一个布局文件item.xml,代码如下:

<?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">    <ImageView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/pic"        />    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/text"        android:textSize="25sp"        android:layout_gravity="center_vertical"        android:layout_marginLeft="10dp"        /></LinearLayout>
二、创建新的布局文件layout.xml

<?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">    <ListView        android:id="@+id/listview"        android:layout_width="match_parent"        android:layout_height="match_parent" /></LinearLayout>

三、

(SimpleAdapter)数据适配器的实现过程:

1.新建适配器
simp_adapter=new SimpleAdapter<String>(context,data,resource,from,to);
context:上下文(this)
data:有特定泛型的集合数据源--一个Map所组成的List集合
(新建自定义List<Map<String,Object>> dataList并通过方法返回在此处)
<每一个Map都会去对应列表中的一行,每一个Map中的键必须包含所有在from中所指定的键>
resource:列表项的布局文件(自定义布局)
from:记录Map中的键名(new String[]{布局文件的name})
to:绑定数据视图中的ID,与from成对应关系(new int[]{布局文件中ID})
2.添加数据源到适配器(上一步已包含)
3.视图(ListView)加载适配器
listView.setAdapter(simp_adapter);

4.数据源getdata();
 private List<Map<String, Object>> getdata() {        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();        Map<String, Object> map = new HashMap<String, Object>();        map.put("pic", R.drawable.apple_pic);        map.put("text", "apple");        list.add(map);        map = new HashMap<String, Object>();        map.put("pic", R.drawable.pear_pic);        map.put("text", "pear");        list.add(map);        map = new HashMap<String, Object>();        map.put("pic", R.drawable.watermelon_pic);        map.put("text", "watermelon");        list.add(map);        map = new HashMap<String, Object>();        map.put("pic", R.drawable.cherry_pic);        map.put("text", "cherry");        list.add(map);        map = new HashMap<String, Object>();        map.put("pic", R.drawable.strawberry_pic);        map.put("text", "strawberry");        list.add(map);        map = new HashMap<String, Object>();        map.put("pic", R.drawable.grape_pic);        map.put("text", "grape");        list.add(map);        map = new HashMap<String, Object>();        map.put("pic", R.drawable.orange_pic);        map.put("text", "orange");        list.add(map);        map = new HashMap<String, Object>();        map.put("pic", R.drawable.mango_pic);        map.put("text", "mango");        list.add(map);        map = new HashMap<String, Object>();        map.put("pic", R.drawable.pineapple_pic);        map.put("text", "pineapple");        list.add(map);        map = new HashMap<String, Object>();        map.put("pic", R.drawable.banana_pic);        map.put("text", "banana");        list.add(map);        return list;    }
5.添加点击事件监听,获取选中项的值
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {        /*adapterView是指当前的listview;         *view是当前listview中的item的view的布局,就是可用这个view获取里面控件id后操作控件         * i是当前item在listview中适配器的位置         * l是当前item在listview里第几行的位置         */        //获得选中项中的HashMap对象        HashMap<String,String> map=(HashMap<String,String>)adapterView.getItemAtPosition(i);        String Text=map.get("text");        Toast.makeText(MainActivity.this,Text,Toast.LENGTH_SHORT).show();    }

四、运行效果图

点击了apple选项:

   


点击了watermelon选项:
                  
   

实现过程代码如下:
package com.example.administrator.mydivlistview;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.TextView;import android.widget.Toast;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener{    private ListView listview;    private SimpleAdapter sim_adapter;    private TextView text;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.layout);        text=(TextView) findViewById(R.id.text);        listview = (ListView) findViewById(R.id.listview);        sim_adapter = new SimpleAdapter(this, getdata(), R.layout.item, new String[]{"pic", "text"}, new int[]{R.id.pic, R.id.text});        listview.setAdapter(sim_adapter);        listview.setOnItemClickListener(this);    }    private List<Map<String, Object>> getdata() {        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();        Map<String, Object> map = new HashMap<String, Object>();        map.put("pic", R.drawable.apple_pic);        map.put("text", "apple");        list.add(map);        map = new HashMap<String, Object>();        map.put("pic", R.drawable.pear_pic);        map.put("text", "pear");        list.add(map);        map = new HashMap<String, Object>();        map.put("pic", R.drawable.watermelon_pic);        map.put("text", "watermelon");        list.add(map);        map = new HashMap<String, Object>();        map.put("pic", R.drawable.cherry_pic);        map.put("text", "cherry");        list.add(map);        map = new HashMap<String, Object>();        map.put("pic", R.drawable.strawberry_pic);        map.put("text", "strawberry");        list.add(map);        map = new HashMap<String, Object>();        map.put("pic", R.drawable.grape_pic);        map.put("text", "grape");        list.add(map);        map = new HashMap<String, Object>();        map.put("pic", R.drawable.orange_pic);        map.put("text", "orange");        list.add(map);        map = new HashMap<String, Object>();        map.put("pic", R.drawable.mango_pic);        map.put("text", "mango");        list.add(map);        map = new HashMap<String, Object>();        map.put("pic", R.drawable.pineapple_pic);        map.put("text", "pineapple");        list.add(map);        map = new HashMap<String, Object>();        map.put("pic", R.drawable.banana_pic);        map.put("text", "banana");        list.add(map);        return list;    }    @Override    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {        /*adapterView是指当前的listview;         *view是当前listview中的item的view的布局,就是可用这个view获取里面控件id后操作控件         * i是当前item在listview中适配器的位置         * l是当前item在listview里第几行的位置         */        //获得选中项中的HashMap对象        HashMap<String,String> map=(HashMap<String,String>)adapterView.getItemAtPosition(i);        String Text=map.get("text");        Toast.makeText(MainActivity.this,Text,Toast.LENGTH_SHORT).show();    }}



1 0
原创粉丝点击