为ListView添加适配器,使list可以显示一个ImageView和两个textview

首先定义主Actvity的显示布局XML文件:

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

添加到列表中的每个元素都叫item,为每个item定义布局格式文件:simple_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    
    <ImageView 
        android:id="@+id/header"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:paddingLeft="10dp"     
        />
    <LinearLayout  android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView 
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20dp"
            android:textColor="#f0f"
            android:paddingLeft="10dp"
            />
        <TextView 
            android:id="@+id/desc"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="14dp"
            android:paddingLeft="10dp"
            />
    </LinearLayout>
</LinearLayout>


定义主testActivity,并添加监听器

public class SimpleAdapterTest extends Activity{
//测试列表适配器,列表中的每一项都是图像和两个textview
private String[] names=new String[]{"虎头","弄玉","李清照","李白"};
private String[] descs=new String[]{"可爱的女孩","一个擅长音乐的女孩","一个擅长文学的女性","浪漫主义诗人"};
private int[] imageIds=new int[]{R.drawable.tiger,R.drawable.nongyu,R.drawable.qingzhao,R.drawable.libai};
@Override
public void onCreate(Bundle saveInstanceState){
super.onCreate(saveInstanceState);
setContentView(R.layout.main);
List<Map<String, Object>> listItems=new ArrayList<Map<String,Object>>();
for (int i = 0; i < names.length; i++) {
Map<String, Object> listItem=new HashMap<String,Object>();
listItem.put("header", imageIds[i]);
listItem.put("personName", names[i]);
listItem.put("desc",descs[i]);
listItems.add(listItem);
}

SimpleAdapter simpleAdapter=new SimpleAdapter(this, listItems, R.layout.simple_item, new String[]{"personName","header","desc"}, new int[]{R.id.name,R.id.header,R.id.desc});
ListView list=(ListView)findViewById(R.id.mylist);
list.setAdapter(simpleAdapter);
//list.setOnItemClickListener(new OnItemClickListener() {
//
// @Override
// public void onItemClick(AdapterView<?> parent, View view, int position,
// long id) {
//
// Toast.makeText(SimpleAdapterTest.this, names[position]+"被点击了", Toast.LENGTH_LONG).show();
// }
//});
list.setOnItemSelectedListener(new OnItemSelectedListener() {


@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id) {
//Toast.makeText(SimpleAdapterTest.this, names[position]+"被选中",Toast.LENGTH_LONG).show();
System.out.println(names[position]+"被选中。。。。。");
}


@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub

}
});
}
}

阅读更多
文章标签: listview 布局
个人分类: java基础知识学习
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭