【发布时间】:2016-01-13 10:44:21
【问题描述】:
让我解释一下我的问题。 (我是java新手,所以也许这种类型的事情可能很容易,但我无法弄清楚!)
我有一个 JSONObject,它看起来像:
{
notes:[
{
"scolaryear":2013,
"codemodule":"B-CPE-042",
"titlemodule":"B1 - Unix & C Lab Seminar",
"codeinstance":"NCE-1-1",
"codeacti":"acti-134315",
"title":"Piscine Jour 1",
"date":"2013-10-04 13:33:51",
"correcteur":"ramassage-tek",
"final_note":0,
"comment":"Ex_00 -> output differs"
},
{} // And so on ..
]
}
现在我可以通过以下方式获取所有数据:
try {
// Pulling items from the array
JSONArray notesArr = jsonObject.getJSONArray("notes");
try {
ListView lv = (ListView) _modulesActivity.findViewById(R.id.listView);
List < String > notesList = new ArrayList < String > ();
for (int i = 0; i < notesArr.length(); i++) {
JSONObject tmp = notesArr.getJSONObject(i);
String code_module = tmp.getString("codemodule");
String module = tmp.getString("titlemodule");
String title = tmp.getString("title");
String final_note = tmp.getString("final_note");
String year = tmp.getString("scolaryear");
String comment = tmp.getString("comment");
String display = year + " | " + title + " | " + final_note;
notesList.add(display);
}
ArrayAdapter < String > arrayAdapter = new ArrayAdapter < String > (
_mainContext, android.R.layout.simple_list_item_1, notesList);
lv.setAdapter(arrayAdapter);
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(_mainContext, "Error: " + e.getMessage(), Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(_mainContext, "Error: " + e.getMessage(), Toast.LENGTH_LONG).show();
}
因此,使用该技术,我将所有数据放在一个数组中,并且只有一个 listView,它看起来像:
- 2014 |项目#1 | 13/20
- 2015 |项目#2 | 20/20
但我需要按年份和模块订购我的数据。
看起来像:
> YEAR (year)
> TITLE OF MODULE (module) - MODULE CODE (codemodule)
> PROJECT NAME (title) | MARK (final_note)
- COMMENT (comment)
你有一个带有年份的第一个标题,当你点击年份时,你可以看到所有的模块:
> MODULE #1
> MODULE #2
...
当你点击一个模块时,你可以看到所有项目:
> PROJECT #1 | MARK : 20
> PROJECT #2 | MARK : 13
...
最后,当您单击一个项目时,您可以看到评论!
^ PROJECT #1 | MARK : 20
- Great project .. bla bla bla
(或者如果可能的话,可能会显示一个包含 cmets 的弹出窗口)
我知道这可能是一件复杂的事情,但我真的很想实现它!
提前感谢您的帮助!
【问题讨论】:
-
你需要实现code.google.com/p/tree-view-list-android并根据你的需要进行定制。
-
您可以做的是从字符串中获取日期,将其存储在笔记格式的对象中(选择您的格式,例如 yyyy-MM-dd),然后使用 Comparator 按日期对列表对象进行campare默认情况下,它将对您的日期进行升序排序。
-
你想在listview的列表项中显示什么??请在这里发短信。