0

我有一个从数据库填充的列表视图,在 onItemLongClick 上我有一个上下文菜单,我想用它来编辑和更新列表中的选定项目。问题是我不知道如何获取所选项目的值,以便在另一个具有带有编辑文本的表单的活动上使用它们。我希望在新活动开始时,这些字符串值位于适当的编辑文本上。这是 onItemLongClick 代码:

    **REMOVED AND ADDED CORRECT CODE BELOW**

使用光标,我获取所选项目的值并将它们存储在字符串 nameOfSong 和 ArtistOfSong 中。当活动开始填充相应的编辑文本时,我该如何实现?

==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 值更新数据库行。

4

2 回答 2

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 中,然后在开始活动的任何地方执行相同的过程。

于 2013-02-12T20:32:41.080 回答
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 为什么你要让它可编辑

于 2013-02-12T21:15:14.503 回答