Android ListView重复条目

时间:2013-11-18 16:27:35

标签: android-intent android-listview android-arrayadapter arrays android-adapterview

如果我在活动1的edittext中输入“Hello”,它会将“Hello”添加到活动2中的listview作为第一个条目(没有错误)。此外,如果我输入“Apple”作为我的第二个条目,我会将“Hello”的第一个条目更改为“Apple”并添加新的第二个条目“Apple”...导致两个条目变为“Apple”和“Apple” ......有什么想法吗?

ACT2     @覆盖     protected void onCreate(Bundle savedInstanceState){         super.onCreate(savedInstanceState);         的setContentView(R.layout.activity_argue_list);

    ListView txtlist = (ListView)findViewById(android.R.id.list);


    Bundle bun = getIntent().getExtras();
     Lrg = bun.getString("Jenny");
     Med = bun.getString("Forest");
     Med2 = bun.getString("Gump");

        KoreyzAdapter add = new KoreyzAdapter();
        txtlist.setAdapter(add);
        list.add(0, Lrg);
        add.notifyDataSetChanged();
        setListAdapter(add);
}
class KoreyzAdapter extends ArrayAdapter<String>{

      public KoreyzAdapter() {
          super(ArgueListActivity.this, android.R.layout.simple_list_item_1, list);
    }
      class ViewHolder{
          TextView who;
          TextView sex;
          TextView cat;
          ImageView pic;

          ViewHolder(View v){
              who = (TextView) v.findViewById(R.id.inputLrgtxt);
              sex = (TextView) v.findViewById(R.id.whoMedtxt);
              cat = (TextView) v.findViewById(R.id.stupidMedtxt);
              pic = (ImageView)v.findViewById(R.id.sexpic);
          }

      }
                public View getView(int position, View convertView, ViewGroup parent) {
                    View row = convertView;
                    ViewHolder holder = null;
                    if(row == null){

                         LayoutInflater inflator = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                        row = inflator.inflate(R.layout.list_item, parent, false);
                        holder = new ViewHolder(row);
                        row.setTag(holder);

                    }else{
                        holder = (ViewHolder)row.getTag();
                    }

                        holder.who.setText(Lrg);
                        holder.sex.setText(Med);
                        holder.cat.setText(Med2);

                        holder.pic.setImageResource(R.drawable.maleandfemale);

                        return row;
                    }

3 个答案:

答案 0 :(得分:0)

您必须清除适配器数据。在从适配器加载listView之前,请在活动的 onCreate()中清除列表。它只是附加旧数据。这就是它出现两次的原因。 我希望这会奏效。

使用onCreate():

list.clear()

答案 1 :(得分:0)

检查this链接。它也可能对你有所帮助。

即使我遇到了同样的问题,我花了2天才摆脱这个问题。

我希望这有助于你。 :)

答案 2 :(得分:0)

使用ArrayAdapters始终传递构造函数中列表行项的布局。

示例:TodosAdapter(Context context, int layoutResourceId, List<Todo> todos);
int layoutResourceId是android.R.layout.simple_list_item_1