我有一个公开的Google电子表格,我从中提取数据并加载到 ArrayList< HashMap<字符串,字符串> >
然后我尝试将其填充到自定义ListView中。
基本上我的电子表格只有3列“Timestamp”“question1”和“question2”。我假设哈希图的键应该都是相同的,只有值会改变?
我正在使用带有三个TextView的自定义xml布局的自定义ArrayAdapter。在我的getView()中,我一直在尝试遍历HashMap并填充listview。我似乎无法让这个工作。当我跑步时,它只显示最后一个细胞。
这是我用来从电子表格中拉出单个行并将其放入HashMap的代码:
// Print entries
for(ListEntry row : feed.getEntries())
{
//Print the first column's cell value
System.out.println("new row");
for(String i : row.getCustomElements().getTags())
{
System.out.println(" "+i + ": " + row.getCustomElements().getValue(i));
rowMap.put(row.getCustomElements().getValue("question1"),
row.getCustomElements().getValue(i));
pulledData2.add( (HashMap<String, String>) rowMap );
}
}
列表适配器,getView()
private class ListAdapter extends ArrayAdapter<HashMap<String, String>> {
private ArrayList<HashMap<String, String>> mItems = pulledData2;
public ListAdapter(DashboardActivity dashboardActivity, ArrayList<HashMap<String, String>> items, LayoutInflater inflater){
super(dashboardActivity, -1, items);
this.mItems = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
//inflate the custom view
if (convertView == null){
LayoutInflater inflater = (LayoutInflater)
DashboardActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.listview_each_item, parent, false);
}
((TextView)convertView.findViewById(R.id.textViewTimeStamp))
.setText( mItems.get(position).get("question1"));
答案 0 :(得分:0)
所以我的问题是每次拉一行时我都没有实例化一个新的hashMap。我添加了一个while循环,现在我有unqiue HashMaps
while( i <= pulledData.size()) {
HashMap<String, String> item = new HashMap<String, String>();
item.put(tag, row.getCustomElements().getValue(tag));
//pulledData.add(entry.getCustomElements().getValue(tag));
pulledData2.add(i, item);
i++;
}