2010-02-14 13 views
9

Android için basit bir uygulama yazıyorum.Android ExpandableListActivity ve SimpleCursorTreeAdapter?

2 tablo var - biri 'grous' ve başka 'group_items' olarak adlandırıldı.

Her iki tablonun verilerini görüntülemek için genişletilebilir listeyi kullanmak istiyorum.

Bunu yapmanın en iyi yolu nedir? SimpleCursorTreeAdapter kullanarak verileri eşlemek mümkün mü? Kullanışlı örnekler bulamadım.

ArrayAdapter kullanarak genişletilebilir listeler oluşturan örnekleri gördüm, bu yüzden verileri önce diziye dönüştürmeli ve sonra da genişletilebilir bir liste oluşturmalı mıyım yoksa doğrudan bunu yapmanın yolu var mı?

Tam bir çalışma örneğine ihtiyacım yok - bunu yapmanın doğru ve verimli yolu hakkında bir öneri.

Leonti

+0

burada bir göz oldu mu);

public class ExercisesList extends ExpandableListActivity { private ExcercisesDbAdapter mDbHelper; // your db adapter private Cursor mGroupsCursor; // cursor for list of groups (list top nodes) private int mGroupIdColumnIndex; private MyExpandableListAdapter mAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mDbHelper = new ExcercisesDbAdapter(this); mDbHelper.open(); fillData(); } private void fillData() { mGroupsCursor = mDbHelper.fetchAllGroups(); // fills cursor with list of your top nodes - groups startManagingCursor(mGroupsCursor); // Cache the ID column index mGroupIdColumnIndex = mGroupsCursor .getColumnIndexOrThrow(ExcercisesDbAdapter.KEY_ROWID); // Set up our adapter mAdapter = new MyExpandableListAdapter(mGroupsCursor,this, android.R.layout.simple_expandable_list_item_1, R.layout.exercise_list_row, new String[] { ExcercisesDbAdapter.KEY_TITLE }, // group title for group layouts new int[] { android.R.id.text1 }, new String[] { ExcercisesDbAdapter.KEY_TITLE }, // exercise title for child layouts new int[] { R.id.exercise_title }); setListAdapter(mAdapter); } // extending SimpleCursorTreeAdapter 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); } // returns cursor with subitems for given group cursor @Override protected Cursor getChildrenCursor(Cursor groupCursor) { Cursor exercisesCursor = mDbHelper .fetchExcercisesForGroup(groupCursor .getLong(mGroupIdColumnIndex)); startManagingCursor(exercisesCursor); return exercisesCursor; } // I needed to process click on click of the button on child item public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { View rowView = super.getChildView(groupPosition, childPosition, isLastChild, convertView, parent); Button details = (Button) rowView.findViewById(R.id.view_button); details.setOnClickListener(new OnClickListener() { public void onClick(View v) { Cursor exerciseCursor = getChild(groupPosition, childPosition); Long exerciseId = exerciseCursor.getLong(exerciseCursor.getColumnIndex(ExcercisesDbAdapter.KEY_ROWID)); Intent i = new Intent(ExercisesList.this, ExerciseView.class); i.putExtra(ExcercisesDbAdapter.KEY_ROWID, exerciseId); startActivity(i); } }); return rowView; } } } 

yararlı olacaktır Umut: http://developer.android.com/resources/samples/ApiDemos/ İşte kod örneği (önemli parçaları) 'dir src/com/örnek/android/apis/görünüm/List6.html? –

+0

@Leonti: Bir çözüm buldunuz mu? eğer evet ise lütfen paylaşın. iyi bir örnek bulunmadığından çok yararlı olacaktır. Teşekkürler –

+0

Ben burada benzer bir şey yapıyorum http://stackoverflow.com/questions/10611927/simplecursortreeadapter-and-cursorloader – toobsco42

cevap

19

Ben basit çözüm SimpleCursorTreeAdapter kullanmak olacağını bulundu.

+0

İçerik Sağlayıcıları önlemek için çalışıyoruz olanlar için çok yararlı. –

+0

Efendim, lütfen soruyu da yanıtlayabilir misiniz? Http://stackoverflow.com/questions/29457424/expandablelistview-extends-simplecursoradapter-to-populate-from-sqlite – silverFoxA