Как добавить строку заголовка в список дочерних представлений расширяемого списка, который использует simplecursortreeadapter
Я использую simplecursortreeadapter для заполнения расширяемого списка и хочу иметь строку в верхней части всех дочерних представлений, которые имеют заголовки для данных.
- Название группы 1 [Расширенное]
- Заголовок (дата, имя, $)
- Ребенок 1 (12.07.2017, Чад, 50.00)
- Ребенок 2 (11.08.2017, Майк, 63.21)
- Название группы 2 [Расширенное]
- Заголовок (дата, имя, $)
- Ребенок 1 (25.03.2017, Кен, 23,97)
- Ребенок 2 (25.01.2017, Will, 101.11)
- Группа 3 [Свернуто]
Возможно ли иметь текстовые представления, которые содержат 3 набора текста заголовка (Дата, Имя, $), которые появляются только при расширении группы? Поскольку SimpleCursorTreeAdapter обрабатывает добавление данных курсора в представления, я не уверен, как добавить строку к этому или как этого добиться. Это возможно?
Редактировать: вот мой класс адаптера:
package com.example.myproject.michaelc.billme;
import android.content.Context;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.database.MergeCursor;
import android.support.v4.content.Loader;
import android.util.Log;
import android.widget.SimpleCursorTreeAdapter;
import com.example.myproject.michaelc.billme.data.BillMeContract;
import java.util.HashMap;
public class PayeeCursorAdapter extends SimpleCursorTreeAdapter {
private final String LOG_TAG = getClass().getSimpleName();
private PayeeActivity mActivity;
protected final HashMap<Integer, Integer> mGroupMap;
// No cursor is added to the adapter so that it only runs when the CursorLoader runs, instead of every time the activity does
public PayeeCursorAdapter(
Context context, // The activity where the adapter will be running
int groupLayout, // The .xml layout file for the group layout
int childLayout, // The .xml layout file for the child layout
String[] groupFrom, // String of column names in the cursor that is the data for each group item
int[] groupTo, // The ID of the views in the group layout that display the column from the groupFrom String[]
String[] childrenFrom, // String of column names in the cursor that is the data for each child item
int[] childrenTo) { // The ID of the views in the child layout that display the column from the childFrom String[]
super(context, null, groupLayout, groupFrom, groupTo, childLayout, childrenFrom, childrenTo);
mActivity = (PayeeActivity) context;
mGroupMap = new HashMap<Integer, Integer>();
}
@Override
protected Cursor getChildrenCursor(Cursor groupCursor) {
int groupPos = groupCursor.getPosition();
int groupId = groupCursor.getInt(groupCursor.getColumnIndex(BillMeContract.PayeeEntry._ID));
Log.d(LOG_TAG, "getChildrenCursor() for groupPos " + groupPos);
Log.d(LOG_TAG, "getChildrenCursor() for groupId " + groupId);
mGroupMap.put(groupId, groupPos);
Loader<Cursor> loader = mActivity.getSupportLoaderManager().getLoader(groupId);
if(loader != null && !loader.isReset()) {
mActivity.getSupportLoaderManager().restartLoader(groupId, null, mActivity);
} else {
mActivity.getSupportLoaderManager().initLoader(groupId, null, mActivity);
}
return null;
}
public HashMap<Integer, Integer> getGroupMap(){
return mGroupMap;
}
}
1 ответ
Да, это возможно.
Вы также можете увидеть эту ссылку, надеюсь, вы получите свое решение.
http://www.worldbestlearningcenter.com/tips/Android-expandable-listview-header.htm
package android.widget.expandablelistview;
import android.os.Bundle;
import android.util.ExpandableListScenario;
import android.widget.Button;
import android.widget.ExpandableListView;
public class ExpandableListWithHeaders extends ExpandableListScenario {
private static final int[] sNumChildren = {1, 4, 3, 2, 6};
private static final int sNumOfHeadersAndFooters = 12;
@Override
protected void init(ExpandableParams params) {
params.setStackFromBottom(false)
.setStartingSelectionPosition(-1)
.setNumChildren(sNumChildren)
.setItemScreenSizeFactor(0.14)
.setConnectAdapter(false);
}
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
final ExpandableListView expandableListView = getExpandableListView();
expandableListView.setItemsCanFocus(true);
for (int i = 0; i < sNumOfHeadersAndFooters; i++) {
Button header = new Button(this);
header.setText("Header View " + i);
expandableListView.addHeaderView(header);
}
for (int i = 0; i < sNumOfHeadersAndFooters; i++) {
Button footer = new Button(this);
footer.setText("Footer View " + i);
expandableListView.addFooterView(footer);
}
// Set adapter here AFTER we set header and footer views
setAdapter(expandableListView);
}
/**
* @return The number of headers (and the same number of footers)
*/
public int getNumOfHeadersAndFooters() {
return sNumOfHeadersAndFooters;
}
}