android学习笔记之ListView使用

本文介绍了Android中常用的ListView组件的使用方法,包括通过XML布局文件直接创建ListView,以及让Activity继承ListActivity的方式。详细讲解了如何设置布局文件,以及使用ArrayAdapter和SimpleAdapter填充数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ListView是android应用中最为常见的组件之一,它以垂直的方式显示列表项。

使用ListView有两种方式:1、直接使用ListView进行创建(通过xml布局文件配置ListView节点)。2、让Activity类继承ListActivity


一、直接使用ListView进行创建

布局文件设置:

<pre name="code" class="html"><?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/showlist"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1">
    </ListView>

</LinearLayout>

代码填充数据:

public class MyActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		ListView listView = (ListView) findViewById(R.id.showlist);
		String[] array = { "列表项值1", "列表项值2", "列表项值3" };
		ArrayAdapter<String> adapterList = new ArrayAdapter<String>(this,
				android.R.layout.simple_list_item_1, array);
		listView.setAdapter(adapterList);
	}
}

二、让Activity类继承ListActivity

与直接使用ListView进行创建布局不同,ListView id必须设置为android:list属性

布局文件设置:

<?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 <u><span style="color:#ff6666;">android:id="@+id/android:list"</span></u>
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1">
    </ListView>

</LinearLayout>
代码填充数据:

public class MyActivity extends ListActivity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		String[] array = { "列表项值1", "列表项值2", "列表项值3" };
		ArrayAdapter<String> adapterList = new ArrayAdapter<String>(this,
				android.R.layout.simple_list_item_multiple_choice, array);
		setListAdapter(adapterList);
	}
}


三、ListView填充数据的方式

1、使用ArrayAdapter(参照:直接使用ListView进行创建代码)

2、使用SimpleAdapter(适用更加复杂的列表)

布局文件设置:

<?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/showList"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
	<TextView android:id="@+id/Title"
	          android:layout_width="wrap_content"
	          android:layout_height="wrap_content"
	          android:textSize="20sp"
	          android:paddingLeft="10dp"/>
	<TextView android:id="@+id/content"
	          android:layout_width="wrap_content"
	          android:layout_height="wrap_content"
	          android:textSize="15sp"
	          android:paddingLeft="10dp"/>
</LinearLayout>
代码填充数据

public class MyActivity extends Activity {
	private String[] titles = { "列表项值1", "列表项值2", "列表项值3" };
	private String[] contents = { "内容项值1", "内容项值2", "内容项值3" };

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Map<String, Object> itemMap = null;
		List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();
		for (int i = 0; i < titles.length; i++) {
			itemMap = new HashMap<String, Object>();
			itemMap.put("title", titles[i]);
			itemMap.put("content", contents[i]);
			listItems.add(itemMap);
		}
		SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems,
				R.layout.activity_main, new String[] { "title", "content" },
				new int[] { R.id.Title, R.id.content });
		ListView listView=(ListView) findViewById(R.id.showList);
		listView.setAdapter(simpleAdapter);
	}
3、扩展BaseAdapter

布局文件设置:

<?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/showList"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>
public class BaseAdapterTest extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main_base);
		ListView showList=(ListView) findViewById(R.id.showList);
		BaseAdapter baseAdapter=new BaseAdapter() {
			@Override
			public View getView(int position, View convertView, ViewGroup parent) {
				LinearLayout linearLayout=new LinearLayout(BaseAdapterTest.this);
				linearLayout.setOrientation(1);
				TextView titleView=new TextView(BaseAdapterTest.this);
				titleView.setText("标题选项"+position);
				titleView.setTextSize(20);
				TextView contentView=new TextView(BaseAdapterTest.this);
				contentView.setText("内容选项"+position);
				contentView.setTextSize(15);
				
				linearLayout.addView(titleView);
				linearLayout.addView(contentView);
				return linearLayout;
			}
			@Override
			public long getItemId(int position) {	//指定返回值最为列表项ID
				return position;
			}
			@Override
			public Object getItem(int position) {
				return null;
			}
			@Override
			public int getCount() {	//指定一个多少个列表选型
				return 30;
			}
		};
		showList.setAdapter(baseAdapter);
	}
}












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值