- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在为 Android 编写一个简单的应用程序。
我有 2 个表 - 一个名为“grous”,另一个名为“group_items”。
我想使用可扩展列表来显示两个表中的数据。
最好的方法是什么?是否可以使用 SimpleCursorTreeAdapter 映射数据?我找不到任何有用的示例。
我看到了使用 ArrayAdapter 创建可扩展列表的示例,那么我应该先将数据转换为数组,然后再使用它创建可扩展列表,还是直接这样做?
我不需要一个完整的工作示例 - 只需要一个关于什么是正确和最有效的方法的建议。
莱昂蒂
最佳答案
我发现最简单的解决方案是使用 SimpleCursorTreeAdapter。这是代码示例(重要部分):
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;
}
}
}
希望它有用;)
关于Android ExpandableListActivity 和 SimpleCursorTreeAdapter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2261126/
我一直在研究以下 android 应用示例。 http://developer.android.com/resources/samples/ApiDemos/src/com/example/andro
下面是我的 Activity 代码以及一个内部类,它是简单游标树适配器的子类。问题是当我点击 There is an error 的子元素时 protected void onStart() {
我正在为 Android 编写一个简单的应用程序。 我有 2 个表 - 一个名为“grous”,另一个名为“group_items”。 我想使用可扩展列表来显示两个表中的数据。 最好的方法是什么?是否
光标需要如何格式化才能使类别及其子项正确显示。适配器将如何区分什么是类别和什么是子项? 最佳答案 初始 Cursor 只需要父项。在这里,我通常使用 Cursor 来提供不同的值。 您需要扩展 Sim
我正在使用 SimpleCursorTreeAdapter 创建 ExpandableListView。我面临很多问题。 谁能告诉我我该怎么做? 最佳答案 我在 SimpleCursorTreeAda
如何根据光标特定值自定义行布局?我猜我需要自定义bindChildView - 但如何呢? :) 主要功能: public void fillQuestions(int id) { C
我有一个包含三列的 sqlite 数据库:id、日期和字符串。对于一个日期,可以有多个与之关联的字符串,因此我有多个具有相同日期的行,只是字符串不同。 我想使用 ExpandableListView
我正在将 SimpleCursorTreeAdapter 用于 ExpandableListview。我从 android 示例中得到了示例效果很好。 我的两个光标投影是这样的 private sta
我通过扩展 SimpleCursorTreeAdapter 创建了一个 ExpandableListAdapter。游标由加载程序管理。当列表显示给用户时,我启动后台服务以从服务器获取最新数据。如果服
我有一个关于我在我的项目中子类化的 SimpleCursorTreeAdapter 的问题。它目前通过 ContentProvider 与 SQLite-DB 通信。现在,我遇到了一个问题,我想插入后
在花了几天时间研究这个问题之后,我终于放弃并发布了这个问题。这里(部分)回答了类似的问题并提出了解决方案,但没有一个最终帮助了我。与讨论的主题和我的问题的区别似乎是:其他人似乎都没有使用 Simple
我正在尝试通过使用 CursorLoader 和 SimpleCursorTreeAdapter 来异步查询提供程序 这是我的 Fragment 类,它实现了 CursorLoader public
这是我正在使用的:我有一个 ExpandableListView,它使用 SimpleCursorTreeAdapter 来填充来自 SQLite 数据库的 View 。我正在使用自定义组 View
我正在开发一个用于显示大量 RSS 提要的 Android 应用程序(是的,我知道已经有很多这样的应用程序了)。要显示的数据由内容提供者提供支持,我希望向后兼容 API 级别 4。 我正在使用 Exp
我想从 SQLite 数据库获取数据并通过 SimpleCursorTreeAdapter 填充我的 ExpandableListView,但它在某些地方失败了。我真的找不到问题所在,甚至不知道异常发
我是一名优秀的程序员,十分优秀!