将Android Spreadsheet数据导入ArrayList HashMap填充ListView

时间:2014-11-27 06:24:12

标签: java android listview arraylist hashmap

我有一个公开的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"));

1 个答案:

答案 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++;
                        }