У меня возникла проблема, когда мне нужно отображать два текстовых вида в одном элементе списка.Отобразить несколько просмотров с помощью adgement merge в представлении списка андроидов
В одном представлении показан элемент, щелкнув по которому открывается элемент. Другой вид - значок плюс, расширяющий список со своими дочерними элементами.
Я поцарапал себе голову, но не смог найти способ определить, какой вид был выбран в виде списка.
Как-то я придумал 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;
}
}
`
drawer_list_item: `
<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);
`
Вы можете поделиться своим примером кода? – Fahim
добавлен код выше – nullpointer