Android ExpandableListView и загрузчик
Я пытаюсь использовать ExpandableListView с загрузчиком, но у меня есть некоторые проблемы. Моя задача - сделать первый запрос к моей базе данных и сгруппировать его по месяцам, затем для каждого месяца сделать запрос для всех зависимостей по месяцам. Я использую пользовательский контент-провайдер для доступа к моей базе данных. У меня нет проблем с инициализацией моего groupView, но у меня проблемы с моим childView. Я не знаю, как сделать мой запрос... мой первый запрос: ВЫБЕРИТЕ месяц, сумма ОТ ГРУППЫ OutGoUrlData ПО МЕСЯЦ. ЗАКАЗАТЬ ПО МЕСЯЦ; и мой второй для childView: ВЫБЕРИТЕ сумму ОТ OutGoUrlData, ГДЕ месяц = XXX И nameCarId = 1; где XXX зависит от моей родительской группы
MyActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.out_go_layout);
expandableListView = (ExpandableListView)this.findViewById(R.id.expandableListView);
Log.d("treeadaptertag", "OutGoActivity thread : " + Thread.currentThread());
debugId = (TextView)this.findViewById(R.id.infoIdDebug_out_go);
// initSpinner();
Intent i = this.getIntent();
s = i.getLongExtra("id", -1);//From main activity
String[] groupFrom={DataCarContract.OUTGO_COLUMN_MONTH};
int[] groupTo={android.R.id.text1};
String[] childFrom={DataCarContract.OUTGO_COLUMN_DATE,DataCarContract.OUTGO_COLUMN_AMOUNT};
int[] childTo={R.id.out_go_textview,R.id.amount_textView};
outGoSimpleCursorTreeAdapter = new OutGoSimpleCursorTreeAdapter(this,
null,
android.R.layout.simple_expandable_list_item_1,
R.layout.spinner_item_layout,
groupFrom,
groupTo,
R.layout.spinner_item_layout,
childFrom,
childTo);
expandableListView.setAdapter(outGoSimpleCursorTreeAdapter);
getLoaderManager().initLoader(-1, null, this);
}
@Override
public Loader<Cursor> onCreateLoader(int loaderID, Bundle args) {
Log.d(OUTGO_TAG, "onCreateLoader OutGoActivity");
String[] projectionChild = {DataCarContract._ID, DataCarContract.OUTGO_COLUMN_AMOUNT, DataCarContract.OUTGO_COLUMN_PRICE,DataCarContract.OUTGO_COLUMN_DATE};
String selectionChild = DataCarContract.OUTGO_NAME_CAR_ID + "=? AND " + DataCarContract.OUTGO_COLUMN_MONTH+" =?";
String[] selectionChildArgs = {String.valueOf(s), String.valueOf(XXX)};//need value of the group parent month???
String[] projectionBill = {DataCarContract._ID, DataCarContract.BILL_TYPE};
if(loaderID ==-2){
return new CursorLoader(this, DataCarContract.BILLURL_TABLE_CONTENTURI, projectionBill, null, null, null);
}
else if(loaderID != -1){
//Child cursor id
return new CursorLoader(this,DataCarContract.OUTGOURL_TABLE_CONTENTURI,projectionChild,selectionChild ,selectionChildArgs,null);
}else{
//Parent cursor id
String[] projectionGroup = {DataCarContract._ID, DataCarContract.OUTGO_COLUMN_MONTH};
String selectionParent = DataCarContract.OUTGO_NAME_CAR_ID + "=? ";
String[] selectionArgsParents = {String.valueOf(s)};
CursorLoader cl = new CursorLoader(this,DataCarContract.OUTGOURL_TABLE_CONTENTURI,projectionGroup,selectionParent+" GROUP BY (" + DataCarContract.OUTGO_COLUMN_MONTH+ ")",selectionArgsParents ,null);
return cl;
}
Вот мой метод для получения дочернего представления от моего адаптера (я расширяю SimpleCursorTreeAdapter)
@Override
protected Cursor getChildrenCursor(Cursor groupCursor) {
Log.d(SIMPLE_CURSOR_TREE_TAG, "getChildrenCursor");
int id = groupCursor.getInt(groupCursor.getColumnIndex(DataCarContract.COLUMN_NAME_ROWID));
int pos = groupCursor.getPosition();
//String month = groupCursor.getString(groupCursor.getColumnIndex(DataCarContract.OUTGO_COLUMN_MONTH));
hashMap.put(id, pos);
sparseArray.append(id,pos);
Loader<Cursor> childCursorLoader = ctxOut.getLoaderManager().getLoader(id);
if (childCursorLoader!=null &&!childCursorLoader.isReset() ){
ctxOut.getLoaderManager().restartLoader(id,null,ctxOut);
}else{
ctxOut.getLoaderManager().initLoader(id,null,ctxOut);
}
return null;
}
Моя проблема в том, что мне нужны данные из моего курсора для выполнения моего запроса, но я не знаю, как "передать" мои данные из моего адаптера в мой загрузчик. Вот картинка, что мне нужно. введите описание изображения здесь Может быть лучшим решением....? Не могли бы вы мне помочь.