Java 自定义三项ListView适配器

Java 自定义三项ListView适配器,java,android,xml,listview,Java,Android,Xml,Listview,我有一个ListView布局,每个项grade_list.xml有三个值,但我无法让适配器设置第三个值,因为HashMap只包含两个字符串。我该怎么解决这个问题? grade_list.xml 我的服务器响应的内容大致如下: Period 1 - Language Arts;Period 2 - Biology;Period 3 - Engineering~~DIVIDER~~A+;B-;A 以 Class;Class;Class~~DIVIDER~~Grade;Grade;Grade 然后

我有一个ListView布局,每个项grade_list.xml有三个值,但我无法让适配器设置第三个值,因为HashMap只包含两个字符串。我该怎么解决这个问题? grade_list.xml

我的服务器响应的内容大致如下:

Period 1 - Language Arts;Period 2 - Biology;Period 3 - Engineering~~DIVIDER~~A+;B-;A

Class;Class;Class~~DIVIDER~~Grade;Grade;Grade
然后,客户机使用以下代码将该数据放入ListView

最后一个字符串[]ServerResponse=input.split~~DIVIDER~~; 最后一个字符串[]Classes=ServerResponse[0]。拆分;; 最终字符串[]等级=服务器响应[1]。拆分;; ArrayList item_list=新建ArrayList; 对于int i=0;i.长度;i++{ HashMap项=新的HashMap; 项目类别,类别[i]; 第1项:等级,等级[i]; 项目清单.增补项; } String[]list_input=新字符串[]{Class,Grade}; //将列表_输入的字符串值放入XML布局值中 int[]layout_values=newint[]{android.R.id.text1,android.R.id.text2}; //LISTVIEW布局XML文件 int list_LAYOU=等级_列表; ListView gradeListView=ListView findViewByIdR.id.gradeListView; gradeListView.setAdapternew SimpleAdapter此、项列表、列表布局、列表输入、布局值; 我想分两份

Period 1 - Class Name 
在两个单独的值中,句点将填充第一行,类名将填充第二行,由-字符分割。但是,HashMap将只保存两个值,而不是我想要的三个值。
Android文档对此没有太大帮助,谷歌也没有。提前感谢。

请记住,HashMap将数据链接到两个项目的行ID。每个列表行都有一个HashMap。SimpleAdapter执行与代码相同的迭代,用于从每个HashMap加载ListView

大概是这样的:

//Setting the HashMaps

HashMap<String,String> item;
for(int i=0;i<Classes.length;i++){
    item = new HashMap<String,String>();
    item.put( "text1", Period[i]);
    item.put( "text2", Classes[i]);
    item.put( "text3", Grades[i]);
    list.add( item );
}

//...

//Setting the adapter
gradeListView.setAdapter(new new SimpleAdapter(this, item_list, R.layout.TwoLineListItem, new String[] { "text1","text2", "text3" }, new int[] {R.id.text1, R.id.text, R.id.text3}));

尽管您确实应该将TwoLineListItem重命名为ThreeLineListItem以避免将来的混淆。

您可以为列表项创建自定义对象

public class ListItem {
    public String text1;
    public String text1;
    public String text1;

    public ListItem(String text1, String text2, String text3) {
        this.text1 = text1;
        this.text2 = text2;
        this.text3 = text3;
    }
}

然后使用ArrayList和a。

HashMap只包含两个值的确切含义是什么?也就是说,是什么阻止您在其中放入第三个键和值?