我在listview中有问题。我有一个名为SecondActivity.java的主要活动,其中只有诸如kierunkiButton之类的按钮。单击此按钮后,将创建新的活动,KierunkiActivity.java,如下所示:

 kierunkiButton.setOnClickListener(new OnClickListener() {
            public void onClick(View arg0) {
                Intent intent = new Intent();
             intent.setClass(SecondActivity.this, KierunkiActivity.class);
             startActivity(intent);

                            }
       });


新活动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时,都会向列表视图(在KierunkiActivity中)添加行。



我的意思是:第一次单击kierunkibutton时,我有2行(正确)。当我返回上一个活动并再次单击kierunkibutton时,我有这些旧的2行和另外2行(当然是相同的)。第三次之后,我有六个,然后继续。
我认为我应该检查每次单击kierunkibutton后是否填充此列表视图,或者从此列表视图中删除所有行。但是我不怎么做。



你有什么想法吗?
提前致谢!

最佳答案

只需从代码顶部删除new ArrayList<String>();并将其放在openAndQueryDatabase方法中即可。

private void openAndQueryDatabase() {
   results = new ArrayList<String>();
}

10-01 21:03