1.第一种,使用数组适配器(0调用静态方法)
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.list_activity); ListAdapter adapter = ArrayAdapter.createFromResourc(this,R.array.myarrays,android.R.layout.simple_list_item_1); this.setListAdapter(adapter);
2.详细讲解下第二种
首先我们new一个数组
String[] strs = {"aaa","sss","ddd","fff"};
然后我们创建一个新的适配器对象,
ListApadter adapter =new ListAdapter <> (this,android.R.layout.simple_list_item_2,strs); this.setListAdapter(adapter);
this指的是当前Listview,android.R.layout.simple_list_item_2每一行的样式(系统的样式),想要自定义需要自己创建布局,选择textview
我们在其中定义下Textview样式
<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ff9900"> </TextView>
我们可以设置文件过滤器,我们要获取listview
this.getListview().setTextFilterEnabled(ture);
当我们在应用的时候学要实现监听,获取用户点击事件,
this.getListView().setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View View, int position, long id) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, View.getClass().getName()+""+strs[position], 0).show(); } });
position指的是单行的行号,就是View的位置
parent指的是ListView,view指的是每一单行的View(就是TextView)
现在运行一下
我们发现现在显示的只有listview,但是我们想加其他控件呢?
我们重新布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/biaoge" android:layout_weight="0" /> <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1"> </ListView> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="delete" android:layout_weight="0"/> </LinearLayout>
接下来看重点在这
不需要创建新的listview,我们只需要使用android提供的list,把他放进来就可以了
我们在其运行,发现,按钮超出屏幕在,现在我想要有Button必须存在,在离我们引入权重
在TextView和Buttomn中写入android:layout_weight="0"
我们使用最小的权重就Ok,然后我们在ListView中加入android:layout_weight="1"
其实Adapter不仅适用数据,一课时使用资源文件,例如图片列表
全部代码
package com.example.listactivtity; import android.os.Bundle; import android.app.Activity; import android.app.ListActivity; import android.view.Menu; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ListAdapter; import android.widget.Toast; public class MainActivity extends ListActivity { String[] strs = {"aa","ss","dd","ff"}; private boolean ture; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.list_activity); // ListAdapter adapter = ArrayAdapter.createFromResource(this,R.array.myarrays,android.R.layout.simple_list_item_1); // this.setListAdapter(adapter); // ListAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_2,strs); ListAdapter adapter = new ArrayAdapter<Object>(this, R.layout.list_array,strs); this.setListAdapter(adapter); this.getListView().setTextFilterEnabled(ture); this.getListView().setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View View, int position, long id) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, View.getClass().getName()+""+strs[position], 0).show(); } }); } }