弄清楚如何划分列表视图现在正在踢我的屁股。我在这里看到了sectioned-list-adapter的代码:ListView with scrolling/fixed header rows这可能最终是我想要的,但也许有更好的方法。
以下是我需要的要求:
在这里查看Jeff Snarkey的seperatedListAdapter:http://jsharkey.org/blog/2008/08/18/separating-lists-with-headers-in-android-09/我能够提出以下内容:
datasource = new SmashDataSource(this);
datasource.open();
BJJHistory = (ListView) findViewById(R.id.ListHistory);
// create our list and custom adapter
adapter = new SeparatedListAdapter(this);
HistoryBJJ = datasource.getBJJHistory();
// THE DESIRED COLUMNS TO BE BOUND
final String[] columns = new String[] { SQLiteHelper.DATE };
// THE XML DEFINED VIEWS WHICH THE DATA WILL BE BOUND TO
final int[] to = new int[] { R.id.list_item_title };
if (HistoryBJJ != null) {
adapter.addSection("October", new SimpleCursorAdapter(this, R.layout.list_item,
HistoryBJJ, columns, to));
}
BJJHistory.setAdapter(adapter);
这使用以下游标以降序顺序从SQLite数据库中提取数据:
public Cursor getBJJHistory() {
final String[] columns = { SQLiteHelper.COLUMN_ID, SQLiteHelper.DATE };
final Cursor History;
History = database.query(SQLiteHelper.TABLE_BJJ, columns, null, null, null, null,
SQLiteHelper.DATE + " DESC");
return History;
}
这导致以下结果:
一开始这很好,但是我遇到了两个问题:
#2的答案有点简单,只需在listview行布局中放置两个textview,更复杂的是如何对每天的数据库中的所有行进行分组,或者至少对每天进行计数和使用该计数显示在列表中。
首先,回到这里的示例代码:http://code.google.com/p/android-section-list/,而不是提供的示例数组,我想我可以更改以下内容:
SectionListItem[] exampleArray = { // Comment to prevent re-format
new SectionListItem("Test 1 - A", "A"), //
new SectionListItem("Test 2 - A", "A"), //
new SectionListItem("Test 3 - A", "A"), //
new SectionListItem("Test 4 - A", "A"), //
new SectionListItem("Test 5 - A", "A"), //
new SectionListItem("Test 6 - B", "B"), //
new SectionListItem("Test 7 - B", "B"), //
new SectionListItem("Test 8 - B", "B"), //
new SectionListItem("Test 9 - Long", "Long section"), //
new SectionListItem("Test 10 - Long", "Long section"), //
new SectionListItem("Test 11 - Long", "Long section"), //
new SectionListItem("Test 12 - Long", "Long section"), //
new SectionListItem("Test 13 - Long", "Long section"), //
new SectionListItem("Test 14 - A again", "A"), //
new SectionListItem("Test 15 - A again", "A"), //
new SectionListItem("Test 16 - A again", "A"), //
new SectionListItem("Test 17 - B again", "B"), //
new SectionListItem("Test 18 - B again", "B"), //
new SectionListItem("Test 19 - B again", "B"), //
new SectionListItem("Test 20 - B again", "B"), //
new SectionListItem("Test 21 - B again", "B"), //
new SectionListItem("Test 22 - B again", "B"), //
new SectionListItem("Test 23 - C", "C"), //
new SectionListItem("Test 24 - C", "C"), //
new SectionListItem("Test 25 - C", "C"), //
new SectionListItem("Test 26 - C", "C"), //
并将其替换为游标或白天不需要的数据,而不是“A”,“B”,“C”,将其替换为月份名称。
这对我来说非常困惑,因为我还在学习,我已经完成了这个应用程序的几乎所有部分,我只是无法弄清楚如何将数据划分为列表
作为参考,这是“CardioTrainer”的屏幕截图,这是一个具有自定义分段列表的锻炼应用程序,但基本上我正在尝试复制,至少在功能上。
这个来自的表看起来像这样:
答案 0 :(得分:1)
如何使用https://github.com/commonsguy/cwac-merge代替http://code.google.com/p/android-section-list/。
我怀疑你有一个要求,一个部分应该在滚动时粘在顶部。
其次使用合并适配器很简单。
addView(您的剖面视图) addAdapter(您的特定部分适配器)
这应该让你去:)
希望它有所帮助。