我有一个从数据库和onItemLongClick填充的列表视图我有一个上下文菜单,我想用它来编辑和更新列表的选定项目。问题是我不知道如何获取所选项的值,以便在另一个具有edittexts表单的活动中使用它们。我想在新活动开始时,这些字符串值在apporopriate edittexts上。 这是onItemLongClick代码:
**REMOVED AND ADDED CORRECT CODE BELOW**
使用光标我得到所选项目的值并将它们存储在Strings nameOfSong和artistOfSong上。 当活动开始填充相应的edittexts时,我怎么能实现?
== EDIT == 我以这种方式使用SharedPreferences:
第一项活动的OnItemLongClick:
public boolean onItemLongClick(AdapterView<?> listview, View arg1,
final int position, final long arg3) {
//bind context menu to listview' s onIitemLongClick(touch and hold)
// Get the cursor, positioned to the corresponding row in the result set
Cursor cursor = (Cursor) listview.getItemAtPosition(position);
// Get the state's capital from this row in the database.
registerForContextMenu(listView);
openContextMenu(listView);
String nameOfSong =
cursor.getString(cursor.getColumnIndexOrThrow("songname"));
String artistOfSong =
cursor.getString(cursor.getColumnIndexOrThrow("artist"));
SharedPreferences.Editor editor = prefs.edit();
editor.putString("key1", nameOfSong);
editor.putString("key2", artistOfSong);
editor.commit();
第二个活动代码:
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.update_item);
etEditSong = (EditText) findViewById(R.id.etEditSong);
etEditArtist = (EditText) findViewById(R.id.etEditArtist);
sEditDance = (Spinner) findViewById(R.id.sUpdDanceList);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
etEditSong.setText(prefs.getString("key1", null));
etEditArtist.setText(prefs.getString("key2", null));
}
现在我正在接受第二项活动的字符串。现在需要找到如何从editTexts值上面更新数据库行。
答案 0 :(得分:0)
如果您从长按开始下一个活动,则可以使用
Intent intent = new Intent(CurrentActivity.this, DestinationActivity.class);
intent.putExtra(KEY1, nameOfSong);
intent.putExtra(KEY2, artistOfSong);
startActivity(intent);
然后,在接收活动中
String nameOfSong = getIntent().getStringExtra(KEY1);
String artistOfSong = getIntent().getStringExtra(KEY2);
如果您从其他地方开始活动,您可以创建一个全局实例变量并将其设置在onItemLongClick中,然后在您开始活动的任何地方执行相同的过程。
答案 1 :(得分:0)
如果您正在使用SharedPreferences
,只需获取正在使用它的活动的onCreate()
方法中的数据。
SharedPreferences myPrefs = getSharedPreferences("myPrefs", MODE_PRIVATE);
String song = myPrefs.getString("key1", null);
String artist = myPrefs.getString("key2", null);
然后只需设置要显示信息的文本视图的文本
TextView song1 = (TextView) findViewById(R.id.song);
song1.setText(song);
如果你愿意,你可以使用edittext,但如果你只是显示标题idk,为什么你可以编辑它