Hi,
ich bin, wie im gestrigen Post berichtet, totaler Anfaenger und versuche mich nun an einem ExpandableListView fuer mein kleines Projekt "To-do App". Meine Eintraege fuer die Liste kommen aus der Datenbank, das funktioniert auch soweit. Als naechstes wollte ich eine Checkbox fuer jedes Child Element hinzufuegen, das mir den Status des jeweiligen Task anzeigen soll. Im Netzt habe ich dann gelesen, das man dies einfach direkt in die child.xml einfuegt. Gesagt getan. Doch nun frage ich mich natuerlich, wie setzte ich den Status, der ja in der Datenbank steht? Wie greife ich auf diese Checkbox zu? Das Problem mit dem zufaelligen markieren der Checkboxen habe ich natuerlich auch, so wie viele andere, aber darum muss ich mich danach kuemmern. Ich haenge mal ein wenig Sourcecode ran, damit Ihr meinen Aufbau sehen koennt.
@Override
public void onCreate(Bundle savedInstanceState)
{
try{
super.onCreate(savedInstanceState);
setContentView(R.layout.project_details);
textProjectName = (TextView) findViewById(R.id.textProjectName);
update = (Button)findViewById(R.id.btn_update);
ch = (CheckBox)findViewById(R.id.check1);
Intent myIntent = getIntent();
int getIntid = myIntent.getIntExtra("id", -1);
dbHelper=new DatabaseHelper(this);
Cursor c= dbHelper.getProject(getIntid);
SimpleExpandableListAdapter expListAdapter =
new SimpleExpandableListAdapter(this,
showProject(c), // Creating group List.
R.layout.group_row, // Group item layout XML.
new String[] {"Group Item",STATUS}, // the key of group item.
new int[] { R.id.row_name,R.id.rowText2 }, // ID of each group item.-Data under the key goes into this TextView.
createChild(c), // childData describes second-level entries.
R.layout.child_row, // Layout for sub-level entries(second level).
new String[] {"Sub Item"}, // Keys in childData maps to display.
new int[] { R.id.grp_child} // Data under the keys above go into these TextViews.
);
setListAdapter( expListAdapter ); // setting the adapter in the list.
}catch(Exception e){
System.out.println("Errrr +++ " + e.getMessage());
}
}
Alles anzeigen
wie gesagt, meine Checkbox ist in der child_row.xml:
<CheckBox android:id="@+id/check1"
android:focusable="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
In der Methode showProject() baue ich via hashMap meine group_row zusammen, die zeigt den Projektnamen und den Status (offen/erledigt) an
HashMap m = new HashMap();
m.put(STATUS, cur.getString(cur.getColumnIndex("Status")) );
m.put( "Group Item",cur.getString(cur.getColumnIndex("TaskName")) ); // the key and it's value.
projectTasksArray.add( m );
Meine Methode fuer die children:
/* creating the HashMap for the children */
@SuppressWarnings("unchecked")
private List createChild(Cursor cur) {
ArrayList result = new ArrayList();
cur.moveToFirst();
while (cur.isAfterLast() == false) {
ArrayList secList = new ArrayList();
for( int n = 0 ; n < 1 ; ++n ) {
HashMap child = new HashMap();
child.put( "Sub Item", cur.getString(cur.getColumnIndex("TaskInfo")));
secList.add( child );
}
result.add( secList );
cur.moveToNext();
}
return result;
}
Alles anzeigen
Doch wo muss ich nun den Status setzen fuer meine Checkboxen? Ich habe noch eine Methode onGroupExpand() die momentan nichts macht, gehoert dort eine Abfrage rein nach dem Staus der einzelnen Box? Ich bin momentan wirklich verwirrt und weiss nicht mehr weiter. Ich hoffe jemand hat eine Idee. Vielen Dank im Voraus !