【问题标题】:Android ListView Duplicates entriesAndroid ListView重复条目
【发布时间】:2013-12-01 21:29:16
【问题描述】:

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

第二幕 @覆盖 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;
                    }

【问题讨论】:

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


    【解决方案1】:

    使用 ArrayAdapters 总是在构造函数中传递列表行项的布局。

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

    【讨论】:

      【解决方案2】:

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

      即使我遇到了同样的问题,我也花了 2 天时间才解决了这个问题。

      我希望这对您有所帮助。 :)

      【讨论】:

        【解决方案3】:

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

        使用这个 onCreate():

        list.clear()
        

        【讨论】:

        • 我们希望列表视图保留像记事本应用程序列表一样的条目。清除似乎会删除条目。我可能把它放在了 setContentView(R.layout.activity_argue_list); 之后的错误位置;
        • 这取决于您如何加载数据。没有看到你的代码,我不能告诉你太多。这对我有用。你只能知道把东西放在哪里。它肯定会起作用..
        • 是的,我明白了...您正在发送每一行...它会在列表中添加一行
        • 但是为什么它复制上一个条目是我迷失的地方。没有任何意义。
        • 我的意思是复制新条目
        猜你喜欢
        • 2011-12-22
        • 1970-01-01
        • 2012-01-05
        • 2014-08-20
        • 1970-01-01
        • 1970-01-01
        • 2019-06-16
        • 1970-01-01
        • 2013-07-16
        相关资源
        最近更新 更多