如何在单击listview项目时更新sqlite数据库

时间:2017-05-19 10:04:37

标签: android sqlite listview

我有两项活动。在第一个活动中,我有一个listview,在第二个活动中,我有两个editText,我通过edittext在sqlite中保存数据并在listview中显示我现在已经完成了这些事情,当我点击listview项目时,一个活动将打开edittext包含以前的数据,所以我可以编辑它并更新sqlite

Main.java

public class MainActivity extends AppCompatActivity {
List<FileName> filenames;
DBhelper dBhelper;
SQLiteDatabase sqLiteDatabase;
ListViewAdapter listViewAdapter;
ListView listView;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.main_menu, menu);
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_add:
            Intent intent = new Intent(MainActivity.this, Note.class);
            startActivity(intent);
            return true;
        case R.id.action_credits:
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    listView = (ListView)findViewById(R.id.lv_filename);
    dBhelper = new DBhelper(getApplicationContext());
    sqLiteDatabase =dBhelper.getReadableDatabase();
    filenames = dBhelper.getItemFromDatabase(sqLiteDatabase);
    if (filenames != null) {
        listViewAdapter = new ListViewAdapter(getApplicationContext(), R.layout.listview_item, filenames);
        listView.setAdapter(listViewAdapter);
    }
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        }
    });
}

 }

Note.java

public class Note extends AppCompatActivity {
EditText editText;
EditText editText2;
DBhelper dBhelper;
SQLiteDatabase sqLiteDatabase;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.note);
    editText = (EditText)findViewById(R.id.et_title);
    editText2 = (EditText)findViewById(R.id.et_note);


}


public void SaveNote()
{
    dBhelper = new DBhelper(this);
    sqLiteDatabase= dBhelper.getWritableDatabase();
    dBhelper.store(editText.getText().toString(),editText2.getText().toString(),sqLiteDatabase);

}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_note, menu);
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){
        case R.id.action_save:
            SaveNote();
            Intent intent = new Intent(Note.this, MainActivity.class);
            startActivity(intent);
        default:
            return super.onOptionsItemSelected(item);
    }

}
}

DBhelper.java

public class DBhelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "MEMBERSDATA.DB";

DBhelper(Context context)
{
    super(context,DATABASE_NAME,null,DATABASE_VERSION);
}



@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
    sqLiteDatabase.execSQL("CREATE TABLE "+Coloumn.NewInfo.TABLE_NAME+"("+ Coloumn.NewInfo.TITLE+" TEXT,"+ Coloumn.NewInfo.NOTE+" TEXT);");

}
public void store(String Title,String Note, SQLiteDatabase sqLiteDatabase2) {
    sqLiteDatabase2.execSQL("insert into " + Coloumn.NewInfo.TABLE_NAME + " (" + Coloumn.NewInfo.TITLE + ", " + Coloumn.NewInfo.NOTE+ ") values(?,?);", new String[]{Title,Note});

}
public List<FileName> getItemFromDatabase(SQLiteDatabase sqLiteDatabase) {
    List<FileName> result = new ArrayList<>();
    Cursor c = sqLiteDatabase.rawQuery("SELECT * FROM "+Coloumn.NewInfo.TABLE_NAME,null);
    while (c.moveToNext()) {
        result.add(
                new FileName(
                        c.getString(c.getColumnIndex("Name")),
                        c.getString(c.getColumnIndex("Note"))
                )
        );
    }
    c.close();
    return result;
}





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

}
}

1 个答案:

答案 0 :(得分:0)

在您的OnitemClickListener中从您的数据库中获取该项目的数据并将其发送到您的第二个活动,并将这些值设置为编辑文本,如此

  String name = filenames.get(positiom).getName(); //get these values based on your FileName class
    String note = filenames.get(positiom).getNote();//get these values based on your FileName class
    Intent intent =  new Intent(MainActivity.this,Note.class);
    intent.putExtra("Name",name);
    intent.putExtra("Note",note);
    startActivity(intent);

并在您的Note Activity oncreate方法中设置这些值以编辑文本

  String name = getIntent().getStringExtra("Name");
    String note = getIntent().getStringExtra("Note");
     editText1.setText(name);
     editText2.setText(note);