如何从onItemClickListener获取局部变量值以在另一个活动上使用它?

时间:2013-02-12 19:25:54

标签: android

我有一个从数据库和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值上面更新数据库行。

2 个答案:

答案 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,为什么你可以编辑它