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()
。
我正在使用列表视图加载其中的所有数据库项目,而且它可以正常工作。问题是每次我记得 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()
。