ListView 搭配SimpleAdapter

Posted 麦哈顿博士

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ListView 搭配SimpleAdapter相关的知识,希望对你有一定的参考价值。

  这是SimplerAdapter的构造函数

public SimpleAdapter(Context context, List<? extends Map<String, ?>> data,
            @LayoutRes int resource, String[] from, @IdRes int[] to) {
        mData = data;
        mResource = mDropDownResource = resource;
        mFrom = from;
        mTo = to;
        mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

from A list of column names that will be added to the Map associated with each

* item.
to The views that should display column in the "from" parameter. These should all be
* TextViews. The first N views in this list are given the values of the first N columns
* in the from parameter.

context:是上下文;

 List<? extends Map<String, ?>> data:这里是listview的数据来源,最外层是一个list数据结构list泛型指定的是继承了Map的对象。这里我们准备使用ArrayList<HashMap<String,String>>;

resource:这是listview的布局文件注意着是@LayoutRes那么就应该是R.layout里的xml文件

from:看注释这里是指定数据源中Map的column的名字,也就是说是指定Map<key,value>中key;是我们添加数据的索引。

to:这是需要显示的TextView(这里必须是TextView)的id,对应的是Map<key,value>中value,将是我们可见的内容。

那么ListView的布局如下:hashmap_item.xml

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/hash_title"/>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/hash_aticle"/>
</LinearLayout>

 

 主要代码如下

 private ArrayList<HashMap<String,String>> item;
    private ListView listView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView)findViewById(R.id.my_listview);
        DataInit();
        SimpleAdapter sa = new SimpleAdapter(this,item,R.layout.hashmap_item,new String[]{"title","article"},new int[]{R.id.hash_title,R.id.hash_aticle});
        listView.setAdapter(sa);
    }

    private void DataInit(){
        item = new ArrayList<>(20);
        for(int i=0;i<30;i++){
            HashMap<String,String> hashmap = new HashMap<>();
            hashmap.put("title","title:"+i);
            hashmap.put("article","article:"+i);
            item.add(hashmap);
        }
    }

 

以上是关于ListView 搭配SimpleAdapter的主要内容,如果未能解决你的问题,请参考以下文章

使用 SimpleAdapter 访问 listView 的视图

ListView / SimpleAdapter 不刷新 - Android

AndroidStudio中ListView的使用方法之SimpleAdapter适配器

AndroidStudio中ListView的使用方法之SimpleAdapter适配器

AndroidStudio中ListView的使用方法之SimpleAdapter适配器

AndroidStudio中ListView的使用方法之SimpleAdapter适配器