2014-02-10 48 views
3

我想使用簡單的適配器將Sqlite數據庫的內容放入列表視圖中。 我正在使用arraylist>來獲取所有值。它顯示在列表視圖上,但每次運行它時,這些值似乎都會重複。 我該怎麼辦? 這裏是我的代碼Arraylist <hashmap<>>在列表視圖中重複的值

   ArrayList<HashMap<String, String>>val=new ArrayList<HashMap<String,String>>(); 
       Databasehandler db=new Databasehandler(this); 

       private ListView lv; 
        protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
      setContentView(R.layout.contacts); 
      val=db.getAllContacts(); 
        final ListView lv=(ListView)findViewById(R.id.listView1); 


       if(val.size()!=0) 
       { 
      ListAdapter ad=new SimpleAdapter(Contact.this,val,R.layout.v,new String[]{"contacts"},new int[]{R.id.textView2}); 

       lv.setAdapter(ad); 
      } 

回答

1

onCreate方法像以前一樣只是聲明ArrayList中......

ArrayList<HashMap<String, String>>val = null; 

而當你想要把檢索到的值到ArrayList中像初始化此ArrayList ...

val=new ArrayList<HashMap<String,String>>(); 
+0

如何從哈希映射中刪除相同的值? – user3256145

0

你檢查你的數據庫.Does它有重複的值???

如果沒有 - 嘗試在ArrayList中添加值只有當沒有在列表中已經存在,他們

for(each..str){ 
if(!myArrList.contains(str)){ 
myArrList.add(str); 
} 

編輯

因爲你面對你的時候再運行它。使確定的概率數據庫不保存重新填充行的值 OR

只是重新初始化的ArrayList .eg myArrList = new ArrayList<String>();

+0

數據庫沒有重複值 – user3256145

+0

檢查我更新的答案。 –

1

我認爲,問題出在你的列表適配器(簡單適配器)上。請檢查您的列表適配器的getView()是新增的觀點twise,只是檢查出有以下適配器...

只要使用這個定製的適配器,

public class CustomAdapter extends BaseAdapter { 

    private List<SearchObjects> mObjects = null; 
    private LayoutInflater mInflater = null; 

    public CustomAdapter (Context context, List<SearchObjects> mData) { 
     mObjects = mData; 
     mInflater = LayoutInflater.from(context); 
    } 

    public int getCount() { 
     return mObjects.size(); 
    } 

    public Object getItem(int position) { 
     return mObjects.get(position); 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     if (convertView == null) 
     { 
       convertView = mInflater.inflate(R.layout.search_items_single_row,null); 
       holder = new ViewHolder(); 
       holder.txtvName = (TextView) convertView.findViewById(R.id.txtvItemName); 
       convertView.setTag(holder); 
     } 
     else 
      holder = (ViewHolder) convertView.getTag(); 
     holder.txtvName.setText(mObjects.get(position).getDL_TRADENAME()); 
     return convertView; 
    } 

    private class ViewHolder { 
     TextView txtvName = null; 
    } 
} 

&調用它,

mCustomListAdapter = new RxNewSearchDrugsListAdapter(getActivity(), mSearchObjects); 
mListView.setAdapter(mCustomListAdapter); 
相關問題