四、Android ListView数据绑定,事件

在页面中加入ListView

 <ListView
        android:id="@+id/listview1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:layout_editor_absoluteX="8dp"
        tools:layout_editor_absoluteY="8dp" />


ArrayAdapter:

ArrayAdapter
1.新建一个数据适配器
2.ArrayAdapter(上下文,当前listview加载的每一个列表项所对应的布局文件,数据源)
3.适配器加载数据源

 private ListView listView;
    private ArrayAdapter<String>arrayAdapter;
    private SimpleAdapter simpleAdapter;
    private List<Map<String,Object>>data;
listView=(ListView)findViewById(R.id.listview1);
String[] arr={"北京1","北京2","北京3","北京4","北京5","北京6","北京1","北京2","北京3","北京4",};

 arrayAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,arr);
//4.视图加载适配器
 listView.setAdapter(arrayAdapter);
simpleAdapter:这个比较复杂

建立一个item.xml,这是listview中的单个项的样式

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/img"
        android:layout_width="wrap_content"
        android:layout_height="69dp"
        android:src="@mipmap/ic_launcher"
        />
    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:textColor="#000000"
        android:text="网易云"/>


</android.support.constraint.ConstraintLayout>

MainActivity.java

适配器各个参数说明

//        simpleAdapter
//        context:上下文
//        data 数据源,一个map组成的list集合
//        每一个map对应的listview列表中的一行
//        每一个map中的键必须宝行所有在from中所指定的键
//        resource;列表想的布局文件ID
//        from:Map中的键名
//        to:绑定数据驶入中的ID,与from成对应关系

package com.example.administrator.listview;

import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener,AbsListView.OnScrollListener{

    private ListView listView;
    private ArrayAdapter<String>arrayAdapter;
    private SimpleAdapter simpleAdapter;
    private List<Map<String,Object>>data;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        listView=(ListView)findViewById(R.id.listview1);

//        simpleAdapter
//        context:上下文
//        data 数据源,一个map组成的list集合
//        每一个map对应的listview列表中的一行
//        每一个map中的键必须宝行所有在from中所指定的键
//        resource;列表想的布局文件ID
//        from:Map中的键名
//        to:绑定数据驶入中的ID,与from成对应关系
      
        data=new ArrayList<Map<String,Object>>();
       
        simpleAdapter=new SimpleAdapter(this,getd(),R.layout.item,new String[]{"img","text"},new int[]{R.id.img,R.id.text});
        //4.视图加载适配器
        listView.setAdapter(simpleAdapter);
        listView.setOnItemClickListener(this);
        listView.setOnScrollListener(this);
    }
    private List<Map<String,Object>> getd(){
        for (int i=0;i<20;i++){
            Map<String,Object>map=new HashMap<String,Object>();
            map.put("img",R.mipmap.ic_launcher);
            map.put("text","迪亚纳"+i);
            data.add(map);
        }
        return data;
    }

    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        String text=listView.getItemAtPosition(i)+"";
        Toast.makeText(this,"position:"+i+" text:"+text,1).show();
    }



    @Override
    public void onScrollStateChanged(AbsListView absListView, int i) {
        switch (i){
            case SCROLL_STATE_FLING:
                Log.i("tag", "用户手指离开屏幕前,用力划了一下,视图惯性滑动。 ");
                Map<String,Object>map=new HashMap<String,Object>();
                map.put("img",R.mipmap.ic_launcher);
                map.put("text","======迪亚纳======");
                data.add(map);
                //通知UI界面去刷新一下界面
                simpleAdapter.notifyDataSetChanged();
                break;
            case SCROLL_STATE_IDLE:
                Log.i("tag", "视图停止滑动 ");
                break;
            case SCROLL_STATE_TOUCH_SCROLL:
                Log.i("tag", "手指没有离开屏幕,视图正在滑动。 ");
                break;
        }
    }

    @Override
    public void onScroll(AbsListView absListView, int i, int i1, int i2) {

    }
}

simpleAdapter.notifyDataSetChanged();

注意:下拉刷新函数,添加过一个item之后,需要通知UI重写加载视图。




猜你喜欢

转载自blog.csdn.net/qq_38234785/article/details/79499232