Android Studio第13课——Android当中的ListView

ListView的功能:
1.将数据填充到布局;
2.处理用户的选择点击等操作。

列表的显示需要三个元素:
1.ListVeiw:用来展示列表的View;
2.适配器: 用来把数据映射到ListView上的中介;
3.数据源: 具体的将被映射的字符串,图片,或者基本组件。

关于适配器

适配器是一个连接数据和AdapterView的桥梁,通过它能有效地实现数据与AdapterView的分离设置,

使AdapterView与数据的绑定更加简便,修改更加方便。将数据源的数据适配到ListView中的常用适配器有:

ArrayAdapter、SimpleAdapter 和 SimpleCursorAdapter。


简单做了一个app测试,先上图:

Android Studio第13课——Android当中的ListView_第1张图片


点击事件:

Android Studio第13课——Android当中的ListView_第2张图片

最后贴上源码:

user.xml部分:




    
    
    



main.xml部分:




    
        
        

        
    


Activity.java部分:

package com.example.urien.handler;

import android.app.ListActivity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.HashMap;



//ListAcrivity是Activity的子类,是专门为了实现列表形式的Activity
public class MainActivity extends ListActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //定义一个ArrayList类型的动态list ,里面存放的是HashMap键值对形式
        ArrayList> list = new ArrayList>();


        for(int i=0;i<40;i++){
            //定义一个临时的hashMap
            HashMap hashMap = new HashMap();
            //存入姓名键值对
            hashMap.put("user_name","user_"+ i);
            //存入ID
            hashMap.put("user_id","100"+i);
            //讲hashMap存入List
            list.add(hashMap);
        }


    /**
     * 安卓当中很常见的一个SimpeAdapter 主要就是用来添加一些数据
     * Constructor
     *
     * @param context The context where the View associated with this SimpleAdapter is running
     * @param data A List of Maps. Each entry in the List corresponds to one row in the list. The
     *        Maps contain the data for each row, and should include all the entries specified in
     *        "from"
     * @param resource Resource identifier of a view layout that defines the views for this list
     *        item. The layout file should include at least those named views defined in "to"
     * @param from A list of column names that will be added to the Map associated with each
     *        item.
     * @param 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.
     */

        SimpleAdapter listAdpter = new SimpleAdapter(
                this,
                list,
                R.layout.user,
                new String[] {"user_name","user_id"},
                new int[] {R.id.user_name,R.id.user_id}
                );
        /*这个方法是ListAcrivity里面继承过来的*/
        setListAdapter(listAdpter);
    }

    /**
     * List条目点击监听事件
     * */
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);

        /**id和position从上至下从0开始*/
        System.out.print(", id--------- " + id);
        System.out.println(", position- " + position);
    }
}

注释都标的很清楚,不多赘述。

By Urien 2018年6月23日 11:55:02



你可能感兴趣的:(安卓)