您的位置:首页 > 其它

使用ListView显示信息列表,用监听器和适配器,操作

2014-08-18 16:14 323 查看
2014-08-18

数据适配器: 是连接数据源和视图界面的桥梁

1、数组适配器(ArrayAdapter):用于绑定格式单一的数据

  数据源:可以是集合或数组

2、简单适配器(SimpleAdapter):用于绑定格式复杂的数据

  数据源:只能是特定泛型的集合

监听器: 程序和用户(或系统)交互的桥梁

OnScrollListener: 检测滚动的变化,可以用于视图在滚动中加载数据

OnItemClickListener: 用于处理视图中单个条目的点击事件

适配器数据的刷新

notifyDataChanged

数组适配器(ArrayAdapter)

public class MainActivity extends ActionBarActivity implements OnScrollListener,OnItemClickListener{
private ListView listView;
private SimpleAdapter simp_adapter;
private List<Map<String, Object>> dataList;

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

/**
* new SimpleAdapter(context, data, resource, from, to)
* @context:上下文
* @data: 数据源(List<? extends Map<String, ?>> data),
*                 一个Map所组成的List集合
*                 每一个Map都会去对应ListView列表中的一行
*                 每个Map(键-值对) 中的键必须包含在所有在from中所指定的键
* @resource: 列表项的布局文件ID
* @from: Map中的键名
* @to: 绑定数据视图中的ID,与from成对应关系
*/
listView = (ListView) findViewById(R.id.listView1);
dataList = new ArrayList<Map<String, Object>>();

simp_adapter=new SimpleAdapter(this, getData(), R.layout.item
,new String[]{"pic","text"}, new int[]{R.id.pic,R.id.text});

listView.setAdapter(simp_adapter);

//加载事件监听器
listView.setOnItemClickListener(this);
listView.setOnScrollListener(this);
}

private List<Map<String, Object>> getData(){
for (int i = 0; i < 20; i++) {
Map<String,Object> map = new HashMap<String,Object>();
map.put("pic",R.drawable.ic_launcher);
map.put("text", "demo"+i);
dataList.add(map);
}

return dataList;
}

//需求:点击项,返回位置,内容, 吐司,
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO 自动生成的方法存根
String text = listView.getItemAtPosition(position)+"";
Toast.makeText(this, "position="+position+" text="+text, Toast.LENGTH_LONG).show();

}

//手指在列表中滑动,滑动到底部,自动增加项目
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO 自动生成的方法存根
switch(scrollState){
case SCROLL_STATE_FLING:
Log.i("Main","用户手指用力滑了一下,之后离开屏幕");
Map<String, Object> map = new HashMap<String, Object>();
map.put("pic", R.drawable.ic_launcher);
map.put("text", "增加项");
dataList.add(map);
//控制UI线程刷新界面
simp_adapter.notifyDataSetChanged();
break;
case SCROLL_STATE_IDLE:
Log.i("Main", "视图停止滑动");
break;
case SCROLL_STATE_TOUCH_SCROLL:
Log.i("main", "手指未离开屏幕,视图正在滑动");
break;
}
}

@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO 自动生成的方法存根
}
}


监听滚动事件

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: