在页面中加入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重写加载视图。