zoukankan      html  css  js  c++  java
  • 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);
            }
        }
    

     activity_main.xml定义如下

    <?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.skymaster.hs.arrayadapter.MainActivity">
    
        <ListView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/my_listview" />
    </RelativeLayout>

    程序效果图

     

    这个只不过是自己的流水账,偶尔有一些心得,错误的地方概不负责
  • 相关阅读:
    Chunky Monkey(算法)
    Confirm the Ending(算法)
    Return Largest Numbers in Arrays(算法)
    防止SQL注入总结
    mybatis中的#和$的区别 以及 防止sql注入
    拆分字符串为树形结构
    虚拟机类加载机制
    linux加载字体
    项目上线暴露出的问题
    浅析正则表达式-应用篇
  • 原文地址:https://www.cnblogs.com/ashitaka/p/5889245.html
Copyright © 2011-2022 走看看