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);
}
}