笔记20 使用ArrayAdapter、ArrayAdapter为ListView添加数据

目标
1、理解ListView的基础使用
2、学会熟练运用两种适配器(ArrayAdapter、SimpleAdapter)
3、学会熟练运用两种监听器(OnScrollListener,OnItemClickListener)
4、学会熟练运用适配器数据的刷新(notifyDataChanged)


笔记20 使用ArrayAdapter、ArrayAdapter为ListView添加数据
文章图片


MainActivity


package com.example.adapter; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; 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.HashMap; import java.util.List; import java.util.Map; public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener, AbsListView.OnScrollListener {private static final String TAG = "MainActivity"; private ListView mListView; private ArrayAdapter mArrayAdapter; private SimpleAdapter mSimpleAdapter; private List dataList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 匹配布局文件中的ListView控件 setContentView(R.layout.main); mListView = (ListView) findViewById(R.id.listview); //1、新建一个数据适配器 //ArrayAdapter(上下文,当前listView加载的每一个列表项对应的布局文件,数据源) /** * SimpleAdapter(Context context, List data, int resource, * String[] from, int[] to) * Context context: 上下文 * List data :数据源 一个map所组成的Listj集合 *每一个map都会对应listview里的一行 *每一个map(键-值对)中的键必须包含所有from中指定的键 * int resource:列表项的布局文件 * String[] from:map中的键名 * int[] to:绑定数据视图中的ID,与from成对应关系 *///2、适配器加载数据源 String[] arr_data = https://www.it610.com/article/{"ban1", "ban2", "ban3"}; mArrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, arr_data); dataList = new ArrayList(); mSimpleAdapter = new SimpleAdapter(this, getData(), R.layout.item, new String[]{"pic", "text"}, new int[]{R.id.pic, R.id.text}); //3、视图(ListView)加载适配器 //mListView.setAdapter(mArrayAdapter); mListView.setAdapter(mSimpleAdapter); mListView.setOnItemClickListener(this); mListView.setOnScrollListener(this); }private List getData() { for (int i = 0; i < 20; i++) { Map map = new HashMap(); map.put("pic", R.mipmap.ic_launcher); map.put("text", "ban" + i); dataList.add(map); } return dataList; }@Override public void onScrollStateChanged(AbsListView absListView, int scrollState) { switch (scrollState) { case SCROLL_STATE_FLING: Log.e(TAG, "onScrollStateChanged: SCROLL_STATE_FLING"); Toast.makeText(MainActivity.this, "用力滑一下",Toast.LENGTH_SHORT).show(); Map map = new HashMap(); map.put("pic",R.mipmap.ic_launcher); map.put("text","增加项"); dataList.add(map); mSimpleAdapter.notifyDataSetChanged(); break; case SCROLL_STATE_IDLE: Log.e(TAG, "onScrollStateChanged: SCROLL_STATE_IDLE"); break; case SCROLL_STATE_TOUCH_SCROLL: Log.e(TAG, "onScrollStateChanged: SCROLL_STATE_TOUCH_SCROLL"); break; } }@Override public void onScroll(AbsListView absListView, int i, int i1, int i2) {}@Override public void onItemClick(AdapterView adapterView, View view, int i, long l) { // 获取点击ListView item中的内容信息 String text = mListView.getItemAtPosition(i) + ""; // 弹出Toast信息显示点击位置和内容 Toast.makeText(MainActivity.this, "position=" + i + " content=" + text, Toast.LENGTH_SHORT).show(); } }


main.xml
【笔记20 使用ArrayAdapter、ArrayAdapter为ListView添加数据】



item.xml




笔记20 使用ArrayAdapter、ArrayAdapter为ListView添加数据
文章图片
笔记20 使用ArrayAdapter、ArrayAdapter为ListView添加数据
文章图片

笔记20 使用ArrayAdapter、ArrayAdapter为ListView添加数据
文章图片




运行效果:
笔记20 使用ArrayAdapter、ArrayAdapter为ListView添加数据
文章图片


笔记20 使用ArrayAdapter、ArrayAdapter为ListView添加数据
文章图片


    推荐阅读