gpt4 book ai didi

Android ExpandableListActivity 和 SimpleCursorTreeAdapter?

转载 作者:IT王子 更新时间:2023-10-29 06:21:10 31 4
gpt4 key购买 nike

我正在为 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/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com