【发布时间】:2015-02-18 08:49:21
【问题描述】:
我有一个问题需要在一个列表项中显示两个文本视图。
一个视图显示该项目,单击哪个视图会打开该项目。 另一个视图是一个加号图标,扩展列表及其子项。
我经常摸不着头脑,但找不到检测在列表视图中选择了哪个视图的方法。
不知何故,我想出了MergeAdapter,我跟着它添加了两个适配器。
第一个适配器显示实际标题,而另一个只显示一个加号图标。
但列表只显示第一个文本视图,而不是加号图标。
我还需要在MergeAdapter 中显示这两个视图吗?
显示标题,点击它应该打开选定的标题页
`
public class TitleAdapter extends BaseAdapter {
private List<Title> navItems;
private LayoutInflater layoutInflater;
public TitleAdapter(Context context, List<Title> navItems) {
this.layoutInflater = LayoutInflater.from(context);
this.navItems = navItems;
}
@Override
public int getCount() {
return navItems.size();
}
@Override
public Object getItem(int position) {
return navItems.get(position);
}
@Override
public long getItemId(int position) {
return navItems.get(position).getTitleID();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
TextView textView = null;
if(convertView == null) {
view = layoutInflater.inflate(R.layout.drawer_list_item, parent, false);
} else {
view = convertView;
}
textView = (TextView) view.findViewById(R.id.textView);
Title item = (Title)getItem(position);
textView.setText(item.getTitle());
return view;
}
}
`
显示 + 图标,单击它应在列表中添加新条目,即所选标题的子项
`
public class ExpandAdapter extends BaseAdapter {
private int items;
private LayoutInflater layoutInflater;
public ExpandAdapter(Context context, int items) {
this.layoutInflater = LayoutInflater.from(context);
this.items = items;
}
@Override
public int getCount() {
return items;
}
@Override
public Object getItem(int position) {
return "+";
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
if(convertView == null) {
view = layoutInflater.inflate(R.layout.drawer_list_item2, parent, false);
} else {
view = convertView;
}
return view;
}
}
`
抽屉列表项: `
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textColor="@color/dark_grey"
android:textSize="20sp"
android:textStyle="normal"
style="?android:attr/listSeparatorTextViewStyle"
android:text="Hi" />
`
drawer_list_item2:
`
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/expandBtn"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textColor="@color/dark_grey"
android:textSize="20sp"
android:textStyle="normal"
style="?android:attr/listSeparatorTextViewStyle"
android:text="+" />
`
但我看不到加号图标!
我在MergeAdapter 中添加了这样的:
`
MergeAdapter m = new MergeAdapter();
TitleAdapter t = new TitleAdapter(this, navItems, hasChild);
ExpandAdapter e = new ExpandAdapter(this, navItems.size());
m.addAdapter(t);
m.addAdapter(e);
`
【问题讨论】:
-
你能分享你的示例代码吗?
标签: android android-listview view