ListView和ListActivity

ListView的形式

ListView以垂直列表的形式显示所有列表项

创建ListView有如下两种方式:

1)直接使用ListView进行创建

2)Activity继承ListActivity(相当于该Activity显示的组件是ListView)

ListActivity的使用方法

1、直接继承ListActivity,ListActivity无须界面布局文件,它的布局文件相当于只有一个ListView.因此只要为ListActivty设置Adapter即可。

1)定义MainActivity文件

public class MainActivity extends ListActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
//		setContentView(R.layout.activity_main);
		//无须使用布局文件
		String[] arr={"孙悟空","猪八戒","唐僧"};
		//创建ArrayAdapter对象
		ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,arr);
		//设置窗口显示列表
		setListAdapter(adapter);
}
}

Android提供了一些标准的布局文件,例如上面的simple_list_item_multiple_choice。在使用的时候可以具体查阅。

运行的结果如下所示:

使用这种方式的不能灵活的对界面元素进行修改,那如何进行自定义界面布局呢?

2、使用自定义的界面布局

可以通过在onCreate()方法中通过设置setContentView(int layoutId)方法设置用户的自定义布局

具体实现如下:

1)实现MainActivity文件

public class MainActivity extends ListActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//无须使用布局文件
		String[] arr={"孙悟空","猪八戒","唐僧"};
		//创建ArrayAdapter对象
		ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,R.layout.activity_listview,arr);
		//设置窗口显示列表
		setListAdapter(adapter);
	}
}
2)相对于第一种方式,在这里面我添加了两个布局文件,一个是activity_main布局文件和activity_listview布局文件,设置方式分别如下:

activity_main文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
     >
    <!-- 自定义一个ListView  -->
<ListView 
    android:id="@+id/android:list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/yellow"
    android:drawSelectorOnTop="false"
    />
</LinearLayout>
activity_listview
<?xml version="1.0" encoding="utf-8"?>
<!-- 对每个item进行设置 -->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/label"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    android:background="@color/yellow"
    android:textStyle="bold">
</TextView>

运行的结果如下所示

运行中出现的错误:

Your content must have a ListView whose id attribute is 'android.R.id.list'

解决方法:

出现该问题的原因是我在activity_main文件命名ListView的名称时是自定义了一个名字。但是在继承ListActivity的情况下,必须命名成android:id="@+id/android:list"或者android:id="@android:id/list"才可以。这相当于你修改的仍然是ListActivity中自带的ListView,并对它的布局信息进行修改。否则,可以直接继承Activity实现自己的ListView





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ListViewAndroid中最常用的UI组件之一,用于展示具有固定结构的大量数据。它继承自AdapterView,可以通过Adapter来动态地显示数据。 ListView的特点是:每一行数据都是相同的布局,并且每个Item的高度是相同的。因此,我们可以利用ListView来展示一些比较简单的数据列表。 在使用ListView时,我们需要实现一个Adapter来提供数据,并且可以对ListView的Item进行自定义布局。以下是一个简单的使用ListView的例子: ```java public class MainActivity extends AppCompatActivity { private ListView mListView; private List<String> mDataList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mListView = findViewById(R.id.list_view); // 初始化数据 mDataList = new ArrayList<>(); for (int i = 0; i < 50; i++) { mDataList.add("Item " + i); } // 创建适配器 ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mDataList); // 设置适配器 mListView.setAdapter(adapter); } } ``` 在这个例子中,我们使用了Android自带的ArrayAdapter作为ListView的适配器,并且使用了系统提供的简单列表项布局simple_list_item_1,将数据逐一展示在ListView中。 除了普通的ListViewAndroid还提供了一个ListActivity类,它是一个已经封装好的Activity,专门用来展示ListView。我们只需要继承ListActivity,实现一个适配器即可。以下是一个使用ListActivity的例子: ```java public class MainActivity extends ListActivity { private List<String> mDataList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 初始化数据 mDataList = new ArrayList<>(); for (int i = 0; i < 50; i++) { mDataList.add("Item " + i); } // 创建适配器 ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mDataList); // 设置适配器 setListAdapter(adapter); } } ``` 在这个例子中,我们继承了ListActivity,并且在onCreate()方法中直接使用setListAdapter()方法设置适配器,省去了findViewById()和ListView的初始化过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值