将Hashmap放入Arraylist <hashmap> </hashmap>

时间:2014-09-08 06:14:46

标签: java android arraylist hashmap

我是android的新手。我尝试从Database获取数据并将其放入HashMap。但我在这里遇到了一些问题。当我尝试输入数据时,我收到了错误。

我在代码中对错误行发表了评论。你可以在下面查看

这是我的班级

private static final String TAG_ITEM_NAME = "item_name";
// Hashmap for ListView
ArrayList<HashMap<String, String>> searchlist;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.search);

    searchlist = new ArrayList<HashMap<String, String>>();

    Intent search = getIntent();
    String searchResult = search.getStringExtra("TAG_SEARCH");
    DatabaseHandler db = new DatabaseHandler(

    List <AllItem> allItems = new ArrayList<AllItem>();

    allItems = db.getAllSearchResult(searchResult);

    HashMap<String, AllItem> all_Items = new HashMap<String, AllItem>();

    for(AllItem cn : allItems) {    


        String item_name = cn.getItem_name();
        //AllItem item_name = all_Items.put(cn.getItem_name(), cn);

        all_Items.put(TAG_ITEM_NAME,item_name);  // I got error here
    }

    searchlist.add(all_Items);

    ListAdapter adapter = new SimpleAdapter(
            Search.this, searchlist,
            R.layout.searchlayout, new String[] {TAG_ITEM_NAME}, 
            new int[] { R.id.category_name}
            );

 // Assign adapter to ListView
    listview.setAdapter(adapter);

}

错误说The Method put(String, Allitem) int type Hashmap<String,Allitem> is not applicable for the argument (String, String)

如何解决此错误?在此之前谢谢:D

7 个答案:

答案 0 :(得分:1)

all_items需要StringAllItem,但您要在此行中放置两个String

// TAG_ITEM_NAME is a String and item_name is also a String
all_Items.put(TAG_ITEM_NAME,item_name);

答案 1 :(得分:1)

您尝试将地图作为值字符串放入,但是将expect映射为值AllItem,因此您必须以这种方式修改代码:

for(AllItem cn : allItems) {    
    String item_name = cn.getItem_name();
    all_Items.put(item_name , cn );
}

此代码将使用与您的对象名称相等的键将您的类对象添加到地图中。

答案 2 :(得分:0)

您的HashMap如下:

HashMap<String, AllItem> all_Items = new HashMap<String, AllItem>();

这意味着它有String个密钥和AllItem个值。您可以将AllItem对象放在此HashMap

写作时

all_Items.put(TAG_ITEM_NAME,item_name);  // I got error here

您在String内放置HashMap,因此会出错。

你应该这样做:

 all_Items.put(TAG_ITEM_NAME,cn);

答案 3 :(得分:0)

您的散列图是<String, Allitem>。当您尝试将<String, String>放入其中时。

all_Items.put(TAG_ITEM_NAME, item_name);

应改为

all_Items.put(TAG_ITEM_NAME, cn);

希望你能有所作为。

答案 4 :(得分:0)

all_Items被定义为包含<String, AllItem>键值对的散列映射,如下所示:

HashMap<String, AllItem> all_Items = new HashMap<String, AllItem>();

但您尝试将<String,String>键值对推送到all_Items hashmap中:

all_Items.put(TAG_ITEM_NAME,item_name);  // I got error here

您似乎想要将AllItem对象推送到item_name,这可以完成:

all_Items.put(item_name, cn); 

答案 5 :(得分:0)

我没有看到代码中的连接,但使用了给定的信息,您的错误可能与代码中的searchlist变量有关。

改变这个:

ArrayList<HashMap<String, String>> searchlist;

到此:

ArrayList<HashMap<String, AllItem>> searchlist;

答案 6 :(得分:0)

这是因为您宣布HashMap<String, AllItem>并尝试放置all_Items.put(TAG_ITEM_NAME,item_name); which would probably be HashMap<String, String>()