【发布时间】:2017-05-19 10:04:36
【问题描述】:
我有两个活动。在第一个活动中,我有一个列表视图,在第二个活动中,我有两个 editText,我通过 edittext 将数据保存在 sqlite 中并在列表视图中显示它们我已经完成了这些事情,现在我想要当我点击列表视图项目时,一个活动将打开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) {
}
}
【问题讨论】:
-
为什么要为此创建新活动?只需创建一个包含两个编辑文本的对话框,并通过将单击项目的数据附加到对话框编辑文本并更新对 db 的更改来向用户显示该对话框
-
我不需要对话框,因为我正在创建一个简单的记事本应用程序
-
嗯,这个想法应该是通过你的意图包传递点击笔记的 id。在
onCreate(Bundle bun)上,您应该从数据库中获取数据并将其设置为EditText-EditText.setText(String str)。最后,一旦你完成了编辑,你只需要用新的字符串调用更新。 -
我如何传递 id ? @ShahanM
-
Intent intent = new Intent(getBaseContext(), YourEditActivity.class);intent.putExtra("NOTE_ID", noteId);startActivity(intent);