安卓——实用ListView显示消息列表

来源:互联网 发布:applet java 编辑:程序博客网 时间:2024/06/05 16:47

main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <ListView        android:id="@+id/listView"        android:layout_width="match_parent"        android:layout_height="wrap_content" >    </ListView></LinearLayout>

item.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="horizontal" >        <ImageView         android:id="@+id/pic"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:src="@drawable/ic_launcher"        android:layout_marginLeft="15dp"        />    <TextView         android:id="@+id/text"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textSize="20sp"        android:contentDescription="#000000"        android:text="demo"/></LinearLayout>


MainActivityActivity.java

package com.example.android_listvieww;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.R.integer;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.AbsListView;import android.widget.AbsListView.OnScrollListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.Toast;public class MainActivityActivity extends Activity implements OnItemClickListener,OnScrollListener{private ListView listView;private ArrayAdapter<String>arr_adapter;private SimpleAdapter simp_adapter;private List<Map<String, Object>>dataList;//SimpleAdapter的data    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        listView=(ListView) findViewById(R.id.listView);        //1.新建一个数据适配器        //ArrayAdapter(上下文,当前listView加载的每一个列表项所对应的布局文件,数据源)        //2.适配器加载数据源        String[]arr_data={"苹果","香蕉","橙子","猕猴桃"};        arr_adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arr_data);        /*SimpleAdapter——         * 1.context:上下文         * 5.data:数据源List<? extends Map<String,?>> data 一个Map所组成的List集合,         * 每一个Map都会去对应ListView列表中的一行,         * 每一个Map(键-值对)中的键必须包含所在from中所指定的键         * 2.resource:列表项的布局文件ID         * 4.from:Map中的键名         * 3.to:绑定数据视图中的ID,与from对应关系         * */        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});        //3.视图加载适配器        //listView.setAdapter(arr_adapter);        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", "苹果"+i);dataList.add(map);}    return dataList;}@Overridepublic void onScroll(AbsListView view, int arg1, int arg2, int arg3) {// TODO Auto-generated method stub}@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {// TODO Auto-generated method stubswitch (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);//下拉刷新simp_adapter.notifyDataSetChanged();//下拉刷新,动态更新视图中所包含的数据break;case SCROLL_STATE_IDLE:Log.i("Main","视图已经停止滑动");case SCROLL_STATE_TOUCH_SCROLL:Log.i("Main","手指没有离开屏幕,视图正在滑动");break;default:break;}}@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {// TODO Auto-generated method stubString text=listView.getItemAtPosition(position)+"";Toast.makeText(this, "position="+position+" text="+text, Toast.LENGTH_SHORT).show();}}





1 0