mercredi 15 avril 2015

Android - Omit repetition in ExpandableListView

I am populating my ExpandableListView from SQLite.. The problem I am facing is that I have repeating parent/group in my ExpandableListView.


enter image description here


I am using the following code to populate my ExpandableListView



ExpandableListView expLV;
Cursor mGroupsCursor;
MyExpandableListAdapter mAdapter;
PedometerDB mDbHelper;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.activity_history, container, false);
expLV = (ExpandableListView) v.findViewById(R.id.expLV);
mDbHelper = new PedometerDB(getActivity());
fillData();

return v;
}

private void fillData() {
mDbHelper.open();
mGroupsCursor = mDbHelper.fetchGroup();
mGroupsCursor.moveToFirst();

mAdapter = new MyExpandableListAdapter(mGroupsCursor, getActivity(),
R.layout.elv_parent, R.layout.elv_child,
new String[] { PedometerDB.KEY_MONTH },
new int[] { R.id.tvMonth }, new String[] {
PedometerDB.KEY_STEPS, PedometerDB.KEY_DATE_TIME,
PedometerDB.KEY_DISTANCE, PedometerDB.KEY_WEATHER,
PedometerDB.KEY_FEELING }, new int[] {
R.id.tvStepsDatabase, R.id.tvDateDatabase,
R.id.tvDistanceDatabase, R.id.ivWeatherDatabase,
R.id.ivFeelingDatabase });

expLV.setAdapter(mAdapter);
mDbHelper.close();
}

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) {
mDbHelper.open();
Cursor childCursor = mDbHelper.fetchChildren(groupCursor
.getString(groupCursor.getColumnIndex("month")));
childCursor.moveToFirst();
mDbHelper.close();
return childCursor;
}
}


PedometerDB:



public Cursor fetchGroup() {
String query = "SELECT * FROM " + PEDOMETER_TABLE;
return ourDatabase.rawQuery(query, null);
}

public Cursor fetchChildren(String month) {
String query = "SELECT * FROM " + PEDOMETER_TABLE + " WHERE "
+ KEY_MONTH + " = '" + month + "'";
return ourDatabase.rawQuery(query, null);
}

Aucun commentaire:

Enregistrer un commentaire