HashMap ArrayList在AutoCompleteTextView建议中显示相同的值两次

时间:2014-04-01 11:05:55

标签: java android arraylist hashmap

我的代码:

// Reading all contacts from database
    List<BNICorporateBean> contacts = db.getAllInfo();
     // Each row in the list stores country name, currency and email
    ArrayList<HashMap<String,String>> aList = new ArrayList<HashMap<String,String>>();
        for (BNICorporateBean cn : contacts) 
        {   
            if(!memId.trim().equalsIgnoreCase(cn.getBNIMemID().trim()))
            {
                 HashMap<String, String> hm = new HashMap<String,String>();
                 hm.put("name", cn.getMemName());
                 hm.put("email", cn.getMemEmail() );
                 hm.put("mem_id", cn.getBNIMemID());
                 Log.d("Result", cn._MemName+"\n"+cn._MemEmail+"\n"+cn._BNIMemID);                               
                 aList.add(hm);
            }
             memId= cn.getBNIMemID();
            //infoArry.add(cn); 

        }

    // Keys used in Hashmap
    //String[] from = { "name","email"};
    // Ids of views in listview_layout
    //int[] to = { R.id.mem_name,R.id.mem_email};

    // Instantiating an adapter to store each items
    // R.layout.listview_layout defines the layout of each item
    SimpleAdapter adapter = new SimpleAdapter(LoginActivity.this, aList, R.layout.list_member, new String[] { "name","email"},
            new int[]{ R.id.mem_name,R.id.mem_email});
    /** Setting the adapter to the listView */
    autoComplete.setAdapter(adapter);        

从数据库获取值,我的日志文本显示它返回单个值,但不知道为什么它在列表建议中显示两次相同的值。注意:对于某些值,它会显示一次。

我还打印了我的列表并给出了完美的结果,没有重复值

for(int k=0;k<aList.size();k++)
{
System.out.println(""+aList.get(k));
}   

1 个答案:

答案 0 :(得分:2)

使用它。这可以帮到你

do{
     HashMap<String, String> hm = new HashMap<String,String>();
     hm.put("name", cn.getMemName());
     hm.put("email", cn.getMemEmail() );
     hm.put("mem_id", cn.getBNIMemID());
     Log.d("Result", cn._MemName+"\n"+cn._MemEmail+"  \n"+cn._BNIMemID);                               
     aList.add(hm);
     memId= cn.getBNIMemID();
}while(!memId.trim().equalsIgnoreCase(cn.getBNIMemID().trim()));