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 将项目从listView存储到应用程序的SqLite数据库_Android_Sqlite_Listview - Fatal编程技术网

Android 将项目从listView存储到应用程序的SqLite数据库

Android 将项目从listView存储到应用程序的SqLite数据库,android,sqlite,listview,Android,Sqlite,Listview,我正在开发一个从手机联系人中选择联系人并在列表视图中显示的应用程序。我想将listView项存储到SQLite数据库中,但每次应用程序都会崩溃。我没有LogCat报告,因为AVD出了问题,我用的是我的android设备Moto G2。请对我耐心一点,我只是一个初学者,需要指导 以下是我正在使用的类: DatabaseHandler类 PickAdapter类 PickActivity类 你没有给出日志,所以我无法得到正确的错误。但是我认为您创建表时的错误。你必须以适当的方式给空间。像 Strin

我正在开发一个从手机联系人中选择联系人并在列表视图中显示的应用程序。我想将listView项存储到SQLite数据库中,但每次应用程序都会崩溃。我没有LogCat报告,因为AVD出了问题,我用的是我的android设备Moto G2。请对我耐心一点,我只是一个初学者,需要指导

以下是我正在使用的类:

DatabaseHandler类

PickAdapter类

PickActivity类


你没有给出日志,所以我无法得到正确的错误。但是我认为您创建表时的错误。你必须以适当的方式给空间。像

String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
        + KEY_ListItem + " TEXT" + ")";

您应该采用谷歌推荐的标准“内容提供者、数据加载器、光标适配器”方法,采取更稳健的方法

看,这是这种方法的完整框架。这是一个多一点的代码,但数据内容提供商的分离应该会为您节省很多痛苦,即在最终数据更改时更新列表

祝你好运

public class PickAdapter {

SQLiteDatabase database_obj;
DatabaseHandler handler_obj;
Context context;

public PickAdapter(Context c) {
    context = c;
}

void addListItem(ArrayList<String> numbers) {
    handler_obj = new DatabaseHandler(context,
            DatabaseHandler.DATABASE_NAME, null,
            DatabaseHandler.DATABASE_VERSION);
    database_obj = handler_obj.getWritableDatabase();

    ContentValues values = new ContentValues();
    for (int i = 0; i < numbers.size(); i++) {

        Log.e("vlaue inserting==", "" + numbers.get(i));
        values.put(DatabaseHandler.KEY_ListItem, numbers.get(i));
        database_obj.insert(DatabaseHandler.TABLE_CONTACTS, null, values);

    }

    database_obj.close(); // Closing database connection
}

Cursor getListItem() {
    String selectQuery = "SELECT  * FROM " + DatabaseHandler.TABLE_CONTACTS;

    handler_obj = new DatabaseHandler(context,
            DatabaseHandler.DATABASE_NAME, null,
            DatabaseHandler.DATABASE_VERSION);
    database_obj = handler_obj.getWritableDatabase();
    Cursor cursor = database_obj.rawQuery(selectQuery, null);

    return cursor;
}

}
public class PickActivity extends Activity {
    /** Called when the activity is first created. */
    ListView nlist;
    Button b, saveButton;
    DatabaseHandler handler;
    PickAdapter pickAdapterObj;
    ArrayList<String> phoneNumbers = new ArrayList<String>();
    ArrayList<String> names = new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    saveButton = (Button) findViewById(R.id.button2);
    b = (Button) findViewById(R.id.button1);
    b.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent intent = new Intent(Intent.ACTION_PICK);
            intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
            startActivityForResult(intent, 1);

        }
    });

    saveButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            pickAdapterObj.addListItem(phoneNumbers);
            Cursor cursor = pickAdapterObj.getListItem();

            Log.e("count", "" + cursor.getCount());
            if (cursor != null) {
                cursor.moveToNext();

                do {

                    Log.e("value==", "" + cursor.getString(1));

                } while (cursor.moveToNext());
            }

        }
    });

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    if (data != null) {
        Uri uri = data.getData();
        if (uri != null) {
            Cursor c = null;
            try {
                c = getContentResolver()
                        .query(uri,
                                new String[] {
                                        ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
                                        ContactsContract.CommonDataKinds.Phone.NUMBER,
                                        ContactsContract.CommonDataKinds.Phone.TYPE },
                                null, null, null);
                if (c != null && c.moveToFirst()) {
                    String name = c.getString(0);
                    String number = c.getString(1);
                    // int type = c.getInt(2);
                    storeInArrays(name, number);

                }
            } finally {
                if (c != null) {
                    c.close();
                }
            }
        }
    }
}

public void storeInArrays(String name, String number) {

    ListView noList = (ListView) findViewById(R.id.listView2);
    ListView nameList = (ListView) findViewById(R.id.listView1);
    names.add(name);
    phoneNumbers.add(number);
    ArrayAdapter<String> numberAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, phoneNumbers);
    noList.setAdapter(numberAdapter);

    ArrayAdapter<String> nameAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, names);
    nameList.setAdapter(nameAdapter);

    Toast.makeText(getApplicationContext(), "added", Toast.LENGTH_LONG)
            .show();

}

}
String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
        + KEY_ListItem + " TEXT" + ")";