Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 带ArrayList和ArrayAdapter的SQLite_Android_Sqlite_Arraylist_Android Arrayadapter - Fatal编程技术网

Android 带ArrayList和ArrayAdapter的SQLite

Android 带ArrayList和ArrayAdapter的SQLite,android,sqlite,arraylist,android-arrayadapter,Android,Sqlite,Arraylist,Android Arrayadapter,你能告诉我这个密码有什么问题吗。它运行,但未列出结果。我只需要一个简单的SQLiteDB运行测试来完成我的另一个项目。我假设ArrayList的使用有问题 public class MainActivity extends Activity { String names; ListView lvMain; ArrayList<String> values; ArrayAdapter<String> adapter; DBHelper dbHelper; EditTex

你能告诉我这个密码有什么问题吗。它运行,但未列出结果。我只需要一个简单的SQLiteDB运行测试来完成我的另一个项目。我假设ArrayList的使用有问题

public class MainActivity extends Activity {

String names;
ListView lvMain;
ArrayList<String> values;
ArrayAdapter<String> adapter;

DBHelper dbHelper;
EditText et;
Button btnAdd;
Button btnRead;
Button btnClear;
Button btnShow;

Cursor c;
int nameColIndex;
int idColIndex;

/**
 * Called when the activity is first created.
 */
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    btnAdd = (Button) findViewById(R.id.btnAdd);
    btnRead = (Button) findViewById(R.id.btnRead);
    btnClear = (Button) findViewById(R.id.btnClear);
    btnShow = (Button) findViewById(R.id.btnShow);

    dbHelper = new DBHelper(this);
    lvMain = (ListView) findViewById(R.id.lvMain);
    values = new ArrayList<String>();

}

public void onButtonClick(View v) {

    ContentValues cv = new ContentValues();
    String name = et.getText().toString();
    SQLiteDatabase db = dbHelper.getWritableDatabase();

    switch (v.getId()) {

        case R.id.btnAdd:
            cv.put("name", name);

            // вставляем запись и получаем ее ID
            long rowID = db.insert("mytable", null, cv);

            break;

        case R.id.btnRead:

            // делаем запрос всех данных из таблицы mytable, получаем Cursor 
            c = db.query("mytable", null, null, null, null, null, null);

            // ставим позицию курсора на первую строку выборки
            // если в выборке нет строк, вернется false
            if (c.moveToFirst()) {

                // определяем номера столбцов по имени в выборке
                idColIndex = c.getColumnIndex("id");
                nameColIndex = c.getColumnIndex("name");

                do {
                    // получаем значения по номерам столбцов

                    c.getInt(idColIndex);

                names = c.getString(nameColIndex);

                values.add(names);

                    // переход на следующую строку 
                    // а если следующей нет (текущая - последняя), то false - выходим из цикла
                } while (c.moveToNext());

            } else {
                c.close();
            }

            break;

        case R.id.btnClear:

            // удаляем все записи
            int clearCount = db.delete("mytable", null, null);

            break;

        case R.id.btnShow:
            break;
    }

// закрываем подключение к БД

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

    lvMain.setAdapter(adapter);


    dbHelper.close();     

    adapter.notifyDataSetChanged();

}

 class DBHelper extends SQLiteOpenHelper {

public DBHelper(Context context) {
  // конструктор суперкласса
  super(context, "myDB", null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {

  // создаем таблицу с полями
  db.execSQL("create table mytable ("
      + "id integer primary key autoincrement," 
      + "name text,"
      + "email text" + ");");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}
dbHelper = new DBHelper(this);
           lvMain = (ListView) findViewById(R.id.lvMain);
           values = new ArrayList<String>();

    }

    public void onButtonClick(View v) {

        ContentValues cv = new ContentValues();
        String name = et.getText().toString();
        SQLiteDatabase db = dbHelper.getWritableDatabase();

        switch (v.getId()) {
            case R.id.btnAdd:
                cv.put("name", name);
                long rowID = db.insert("mytable", null, cv);
                break;

            case R.id.btnRead:
                c = db.query("mytable", null, null, null, null, null, null);
                if (c.moveToFirst()) {
                    idColIndex = c.getColumnIndex("id");
                    nameColIndex = c.getColumnIndex("name");

                    do {
                        c.getInt(idColIndex);
                    names = c.getString(nameColIndex);
                    values.add(names);
                    } while (c.moveToNext());
                } else {
                    c.close();
                }
                break;

            case R.id.btnClear:
                int clearCount = db.delete("mytable", null, null);
                break;

            case R.id.btnShow:
                break;
        }
adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, values);
        lvMain.setAdapter(adapter);
    dbHelper.close();     
    adapter.notifyDataSetChanged(); 



}
} }

dbHelper = new DBHelper(this);
           lvMain = (ListView) findViewById(R.id.lvMain);
           values = new ArrayList<String>();

    }

    public void onButtonClick(View v) {

        ContentValues cv = new ContentValues();
        String name = et.getText().toString();
        SQLiteDatabase db = dbHelper.getWritableDatabase();

        switch (v.getId()) {
            case R.id.btnAdd:
                cv.put("name", name);
                long rowID = db.insert("mytable", null, cv);
                break;

            case R.id.btnRead:
                c = db.query("mytable", null, null, null, null, null, null);
                if (c.moveToFirst()) {
                    idColIndex = c.getColumnIndex("id");
                    nameColIndex = c.getColumnIndex("name");

                    do {
                        c.getInt(idColIndex);
                    names = c.getString(nameColIndex);
                    values.add(names);
                    } while (c.moveToNext());
                } else {
                    c.close();
                }
                break;

            case R.id.btnClear:
                int clearCount = db.delete("mytable", null, null);
                break;

            case R.id.btnShow:
                break;
        }
adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, values);
        lvMain.setAdapter(adapter);
    dbHelper.close();     
    adapter.notifyDataSetChanged(); 



}

试着打电话。这会告诉ListView基础数据已更改,它应该无效。

在onClick方法的末尾,尝试调用adapter.notifyDataSetChanged;这将刷新所有使用适配器设置视图值的视图

values = new ArrayList<String>();
dbHelper = new DBHelper(this);
           lvMain = (ListView) findViewById(R.id.lvMain);
           values = new ArrayList<String>();

    }

    public void onButtonClick(View v) {

        ContentValues cv = new ContentValues();
        String name = et.getText().toString();
        SQLiteDatabase db = dbHelper.getWritableDatabase();

        switch (v.getId()) {
            case R.id.btnAdd:
                cv.put("name", name);
                long rowID = db.insert("mytable", null, cv);
                break;

            case R.id.btnRead:
                c = db.query("mytable", null, null, null, null, null, null);
                if (c.moveToFirst()) {
                    idColIndex = c.getColumnIndex("id");
                    nameColIndex = c.getColumnIndex("name");

                    do {
                        c.getInt(idColIndex);
                    names = c.getString(nameColIndex);
                    values.add(names);
                    } while (c.moveToNext());
                } else {
                    c.close();
                }
                break;

            case R.id.btnClear:
                int clearCount = db.delete("mytable", null, null);
                break;

            case R.id.btnShow:
                break;
        }
adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, values);
        lvMain.setAdapter(adapter);
    dbHelper.close();     
    adapter.notifyDataSetChanged(); 



}

}

我收到了,但还是没收到。你能发布你的更新代码吗?或者使用适配器的add方法。您已经添加了main.xml。可能是我遗漏了什么。你在哪里打电话给db.open方法我已经按照你的建议试过了。Evene将DBHelper放在main活动中。当我按add时应用程序崩溃。我已经找到了答案。谢谢大家的时间和努力。
dbHelper = new DBHelper(this);
           lvMain = (ListView) findViewById(R.id.lvMain);
           values = new ArrayList<String>();

    }

    public void onButtonClick(View v) {

        ContentValues cv = new ContentValues();
        String name = et.getText().toString();
        SQLiteDatabase db = dbHelper.getWritableDatabase();

        switch (v.getId()) {
            case R.id.btnAdd:
                cv.put("name", name);
                long rowID = db.insert("mytable", null, cv);
                break;

            case R.id.btnRead:
                c = db.query("mytable", null, null, null, null, null, null);
                if (c.moveToFirst()) {
                    idColIndex = c.getColumnIndex("id");
                    nameColIndex = c.getColumnIndex("name");

                    do {
                        c.getInt(idColIndex);
                    names = c.getString(nameColIndex);
                    values.add(names);
                    } while (c.moveToNext());
                } else {
                    c.close();
                }
                break;

            case R.id.btnClear:
                int clearCount = db.delete("mytable", null, null);
                break;

            case R.id.btnShow:
                break;
        }
adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, values);
        lvMain.setAdapter(adapter);
    dbHelper.close();     
    adapter.notifyDataSetChanged(); 



}