我对 listview 有疑问。我的主要 Activity 名为 SecondActivity.java
,其中我只有 按钮,例如 kierunkiButton。单击此按钮后,将创建新 Activity KierunkiActivity.java
,如下所示:
kierunkiButton.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
Intent intent = new Intent();
intent.setClass(SecondActivity.this, KierunkiActivity.class);
startActivity(intent);
}
});
新 Activity KierunkiActivity
是一个 ListActivity,如下所示:
public class KierunkiActivity extends ListActivity {
SharedPreferences preferences;
SQLiteDatabase sqliteData;
static String kier;
static ArrayList<String> results = new ArrayList<String>();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.lista_activity2);
preferences = PreferenceManager.getDefaultSharedPreferences(this);
openAndQueryDatabase();
displayResultList();
}
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
//Object o = this.getListAdapter().getItem(position);
Object selectedItem = l.getItemAtPosition(position);
kier = selectedItem.toString();
if (position == 0) {
Intent intent = new Intent();
intent.setClass(KierunkiActivity.this, MatematykaActivity.class);
startActivity(intent);
} else if (position == 1) {
Intent intent = new Intent();
intent.setClass(KierunkiActivity.this, MatematykaActivity.class);
startActivity(intent);
}
}
private void openAndQueryDatabase() {
try {
DBHelper dbHelper = new DBHelper(this.getApplicationContext());
sqliteData = dbHelper.getReadableDatabase();
Cursor c = sqliteData.rawQuery(
"select Kierunek from Kierunki order by _id", null);
System.out.println("------cursor: " + c.getCount());
if (c != null) {
if (c.moveToFirst()) {
do {
String kier = c.getString(c.getColumnIndex("Kierunek"));
results.add(kier);
} while (c.moveToNext());
}
}
System.out.println("---------" + results.size() + "--------------");
} catch (SQLiteException se) {
Log.e(getClass().getSimpleName(),
"Could not create or Open the database");
}
}
private void displayResultList() {
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, results));
getListView().setTextFilterEnabled(true);
}
我的问题是每次单击 kierunkibutton 时都会向 ListView (在我的 KierunkiActivity
中)添加行。
我的意思是:第一次单击 kierunkibutton 时,我有 2 行(正确)。当我返回到之前的 Activity 并再次单击 kierunkibutton 时,我有这些旧的 2 行和另外 2 行(当然相同)。第三次之后,我有六个,然后继续下去。 我认为每次单击 kierunkibutton 或从此 ListView 中删除所有行后,我都应该检查是否填充了此 ListView 。但我不知道该怎么做。
你知道怎么做吗? 提前致谢!
最佳答案
只需删除 new ArrayList<String>();
从代码顶部并将其放在 openAndQueryDatabase
中方法。
private void openAndQueryDatabase() {
results = new ArrayList<String>();
}
关于java - ListView 显示两次所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20264447/