Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ExpandableListActivity和SimpleCursorTreeAdapter?_Android_Sqlite_Expandablelistview - Fatal编程技术网

Android ExpandableListActivity和SimpleCursorTreeAdapter?

Android ExpandableListActivity和SimpleCursorTreeAdapter?,android,sqlite,expandablelistview,Android,Sqlite,Expandablelistview,我正在为Android编写一个简单的应用程序 我有两张桌子——一张叫做“grous”,另一张叫做“groupu items” 我想使用可展开列表来显示两个表中的数据 最好的方法是什么?是否可以使用SimpleCursorTreeAdapter映射数据?我找不到任何有用的例子 我看到了使用ArrayAdapter创建可扩展列表的示例,那么我应该先将数据转换为数组,然后使用它创建可扩展列表,还是有直接创建的方法 我不需要一个完整的工作示例,只需要一个关于什么是正确和最有效的方法的建议 Leonti我

我正在为Android编写一个简单的应用程序

我有两张桌子——一张叫做“grous”,另一张叫做“groupu items”

我想使用可展开列表来显示两个表中的数据

最好的方法是什么?是否可以使用SimpleCursorTreeAdapter映射数据?我找不到任何有用的例子

我看到了使用ArrayAdapter创建可扩展列表的示例,那么我应该先将数据转换为数组,然后使用它创建可扩展列表,还是有直接创建的方法

我不需要一个完整的工作示例,只需要一个关于什么是正确和最有效的方法的建议


Leonti

我发现最简单的解决方案是使用SimpleCorSortreeAdapter。 下面是代码示例(重要部分):


希望它会有用;)

你看过这里了吗?@Leonti:那么你能想出一个解决办法吗?如果是,请分享。这将是非常有帮助的,因为没有好的例子可用。谢谢,我在这里做了一些类似的事情,这对我们这些试图避开内容提供商的人来说非常有用。先生,你也能回答我的问题吗
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;
        }

}

}