1.概述
android开发中,有时候发现ListView每一项内容比较多,展现全部内容会影响美观,且整个手机屏显示不了几条记录。这时需要筛选重点内容进行显示,而其他内容隐藏起来,当用户点击感兴趣的记录时才显示其他相对次要或详细信息。
本文将介绍一种实现上述功能点的listview使用样例,希望有所帮助!先上图:
2.代码实现
首先,介绍数据对象,比较简单。
package com.example.dropdownlist;
public class ListItem {
public String title;
public String subTitle;
}
接下来,介绍MainActivity,其中,最重要的是MyAdapter对象adapter。后面将重点介绍该adapter是如何实现显示/隐藏二级内容的。
package com.example.dropdownlist;
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ListView;
public class MainActivity extends Activity {
private ListView lvContent;
private ArrayList<ListItem> alItems;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lvContent = (ListView) this.findViewById(R.id.lv_content);
initData();
}
/**
* 初始化内容
*/
private void initData()
{
alItems = new ArrayList<ListItem>();
// 一共20个item
for (int i = 0; i < 20; i++) {
ListItem item = new ListItem();
item.title = "Title - " + i;
item.subTitle = "Subtitle - " + i;
alItems.add(item);
}
adapter = new MyAdapter(this, alItems);
lvContent.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
下面是activity_main.xml布局文件,简单,就一个ListView。
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<ListView
android:id="@+id/lv_content"
android:layout_width="match_parent"