Android-listview控件
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;
}
} );

浙公网安备 33010602011771号