ardından hayır, bir çok basit genişletilebilir liste uygulaması fırlatır.
İhtiyaç duyduğunuz imleçleri toplamak için db yardımcı sınıfınızda iki yönteme ihtiyacınız vardır.
public class MyExpandableListAdapter extends SimpleCursorTreeAdapter {
public MyExpandableListAdapter(Cursor cursor, Context context,int groupLayout,
int childLayout, String[] groupFrom, int[] groupTo, String[] childrenFrom,
int[] childrenTo) {
super(context, cursor, groupLayout, groupFrom, groupTo,
childLayout, childrenFrom, childrenTo);
}
}
@Override
protected Cursor getChildrenCursor(Cursor groupCursor) {
Cursor childCursor = mDbHelper.fetchChildren(groupCursor.getString(groupCursor.getColumnIndex("id_room"));
getActivity().startManagingCursor(childCursor);
childCursor.moveToFirst();
return childCursor;
}
}
Ve nihayet adaptörü arayıp (sizin aktivitesinde) listenize ayarlayın:
public Cursor fetchGroup() {
String query = "SELECT * FROM rooms"
return mDb.rawQuery(query, null);
}
public Cursor fetchChildren(String room) {
String query = "SELECT * FROM devices WHERE id_room = '" + room + "'";
return mDb.rawQuery(query, null);
}
Sonra (etkinlik içinde) adaptör kurmak gerekir
private void fillData() {
mGroupsCursor = mDbHelper.fetchGroup();
getActivity().startManagingCursor(mGroupsCursor);
mGroupsCursor.moveToFirst();
ExpandableListView elv = (ExpandableListView) getActivity().findViewById(android.R.id.list);
mAdapter = new MyExpandableListAdapter(mGroupsCursor, getActivity(),
R.layout.rowlayout_expgroup, // Your row layout for a group
R.layout.rowlayout_itemlist_exp, // Your row layout for a child
new String[] { "id_room" }, // Field(s) to use from group cursor
new int[] { android.R.id.room }, // Widget ids to put group data into
new String[] { "name_device", "state_device" }, // Field(s) to use from child cursors
new int[] { R.id.device, R.id.state }); // Widget ids to put child data into
lv.setAdapter(mAdapter); // set the list adapter.
}
}
Bu yardımcı olur umarız!
DÜZENLEME
Hepsi çok gibi birlikte gelmelidir:
lv.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
// Your child click code here
return true;
}
});
lv.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, int groupPosition, long id) {
// Your group click code here
return true;
}
});
:
DÜZENLEME 2
, tıklama yakalamak için size aktivite dinleyicileri ayarlayın T kaldırmak zorundayım onun getActivity(). getChildrenCursor() üzerinde startManagingCursor (childCursor)() hata kaldırmak için herhangi bir solytion yok çünkü getActivity() yöntemi MyExpandableListAdapter türü için undefined !! –
Ah, bu kod bir parçadaydı, o yüzden orada çalışırdı. Bunun yerine 'bunu 'veya' youractivity.this 'kullanmayı deneyebilirsiniz. – Barak
Bunu kullanmayı denedim ama görebildiğim gibi MyExpandableListAdapter() bir etkinlik değil ?? –