2014-02-10 49 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); 
相关问题