1:首先先创建一个listview的视图文件。listview.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" > <!-- 在android开发中ListView是比较常用的组件, 它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。 --> <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:divider="#dddddd" android:dividerHeight="1dp"> </ListView> </LinearLayout>
2:定义一个显示界面的视图文件。item.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/pic" android:layout_width="50dp" android:layout_height="50dp" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="10dp" android:layout_marginTop="5dp" android:src="@drawable/xms" android:layout_marginBottom="5dp"/> <TextView android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_toRightOf="@+id/pic" android:textSize="16sp" android:textColor="#333" android:layout_marginTop="10dp"/> <TextView android:id="@+id/text2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/text1" android:layout_below="@+id/text1" android:textColor="#666" android:textSize="14sp"/> <TextView android:id="@+id/text3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/text2" android:layout_alignParentRight="true" android:textColor="#666" android:textSize="12sp" android:layout_marginRight="5dp"/> </RelativeLayout>
3:源文件中编写代码:第一种方式(SimpleAdapter适配器)
package com.huanglinbin.weixintext; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.widget.ListView; import android.widget.RadioGroup; import android.widget.SimpleAdapter; public class MainActivity extends Activity { //私有化Listview的控件。 private ListView listView; //私有化ListView的适配器。 private SimpleAdapter simpleAdapter; //私有化list集合。 private List<Map<String,Object>> list = new ArrayList<Map<String,Object>>(); //私有化radiogub的控件。 private RadioGroup radioGroup; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //先要找到那两个控件。 listView = (ListView) findViewById(R.id.listView1); radioGroup = (RadioGroup) findViewById(R.id.radioGroup1); //把数据源赋值到集合里面。 list = getDate(); //定义一个适配器 simpleAdapter = new SimpleAdapter( this,//上下问对象。 list, //数据源(也就是从数据库里面取出来的数据存放到这来,之后就循环输出出来) R.layout.item,//页面输出的模板。 new String[]{"pic","text1","text2","text3"}, //这个相当于实体类中的属性,把这些属性存放到数组里面。 new int[]{R.id.pic,R.id.text1,R.id.text2,R.id.text3} //这个相对于句柄,通过句柄来找到模板中的数据源。 ); //把这个适配器加入到listview的控件中去。 listView.setAdapter(simpleAdapter); } //定义数据源。 private List<Map<String,Object>> getDate(){ //定义一个循环,把数据循环输出出来。 for(int i=0;i<5;i++){ //定义一个map集合,把集合加入到map的集合里面。 Map<String,Object> map = new HashMap<String, Object>(); map.put("pic",R.drawable.xms); map.put("text1", "小魔神"); map.put("text2", "Android一班老师"); map.put("text3", "昨天"); //把map集合加到list集合里面去。 list.add(map); } return list; } }
第二种方式:(BaseAdapter适配器)
//简单理解为VC绑在一起 baseAdapter,店长推荐 5星级 lv.setAdapter( new BaseAdapter(){ //返回多少条记录 @Override public int getCount() { // TODO Auto-generated method stub return messageList.size(); } //每一个item项,返回一次界面 @Override public View getView(int position, View convertView, ViewGroup parent) { View view = null; //布局不变,数据变 //如果缓存为空,我们生成新的布局作为1个item if(convertView==null){ Log.i("info:", "没有缓存,重新生成"+position); LayoutInflater inflater = MainActivity.this.getLayoutInflater(); //因为getView()返回的对象,adapter会自动赋给ListView view = inflater.inflate(R.layout.listview_item_layout, null); }else{ Log.i("info:", "有缓存,不需要重新生成"+position); view = convertView; } Message m = messageList.get(position); TextView tv_userName = (TextView)view.findViewById(R.id.tv_userName); tv_userName.setText( m.getUserName() ); tv_userName.setTextSize(15); TextView tv_lastMessage = (TextView)view.findViewById(R.id.tv_lastMessage); tv_lastMessage.setText( m.getLastMessage() ); tv_lastMessage.setTextSize(12); TextView tv_datetime = (TextView)view.findViewById(R.id.tv_datetime); tv_datetime.setText( m.getDatetime() ); tv_datetime.setTextSize(12); return view; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } } );