Java 自定义三项ListView适配器
我有一个ListView布局,每个项grade_list.xml有三个值,但我无法让适配器设置第三个值,因为HashMap只包含两个字符串。我该怎么解决这个问题? grade_list.xml 我的服务器响应的内容大致如下: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 然后
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只包含两个值的确切含义是什么?也就是说,是什么阻止您在其中放入第三个键和值?