Android 列表视图中的重复项

Android duplicate items on listview

我正在使用列表视图加载其中的所有数据库项目,而且它可以正常工作。问题是每次我记得 activity 我的列表视图都填充了我的重复项目。 这里的代码:

public class UserActivity extends ActionBarActivity{

public static ArrayList<String> ArrayofName = new ArrayList<String>();
private ListView listView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.user_activity);

    DataHandler db = new DataHandler(this);
    List<Data> items = db.getTitle();

    listView = (ListView) findViewById(R.id.listView1);

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, ArrayofName);

    listView.setAdapter(adapter);
}

例如如果我插入项目 "Facebook" ,它将被插入到我的数据库中,当我调用 UserActivity 时,它将加载数据库内容(在本例中为 Facebook 项目)并在我的 listView 中显示其所有内容。问题是当我这样做时,我的 listView 显示了 2 个 Facebook 项目。如果我有 2 个项目,当我调用 UserActivity 时它会显示 4 个项目。

怎么了? 谢谢

问题在于

 public static ArrayList<String> ArrayofName = new ArrayList<String>();

它不应该是静态的,否则这将被创建一次并且不会在下一个 activity recreate.Remove static 关键字上初始化并像这样写 -

 public ArrayList<String> ArrayofName = new ArrayList<String>();

或 当您从数据库中填充数据时,确保 ArrayList 没有元素。

有两种解决方案:

1.) 从

中删除static关键字
public static ArrayList<String> ArrayofName = new ArrayList<String>();

如果您出于任何原因无法删除关键字,请使用解决方案 2。)。

2.) 在添加新条目之前调用 ArrayList 的方法 clear()