如何将onItemClick中的变量传递给某个java类

时间:2014-03-11 04:44:05

标签: android

我需要从OnClickListener的{​​{1}}获取变量“position”。

onItemClick

这个“位置”将用于另一个班级 我尝试了gallery.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { //Actions based on user's click } 方式,但它说的是 SharedPreferences

需要一些帮助。

4 个答案:

答案 0 :(得分:1)

根据您所说的错误,我认为您使用的是PreferenceManager

    gallery.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v,
                int position, long id) {
            // This statement gives an error.
            // here "this" represents an instance of OnItemClickListener (Anonymous inner class)
            PreferenceManager.getDefaultSharedPreferences(this);
            // but You need an instance of Context. So you can refer Activity here
            PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
        }
    });

答案 1 :(得分:0)

将位置分享到另一个类的简单方法您将把位置存储在另一个变量中..

静态变量并在另一类中使用此变量

     gallery.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View v, int position, long id)
    {
       ActivityName.VariableName = position;
    }

您可以在程序中的任何位置使用此变量...

然后你可以像这样发送上下文...

  getDefaultSharedPreferences(ActivityName.this);
  (or)      
  getDefaultSharedPreferences(getApplicationContext());

一切顺利......

答案 2 :(得分:0)

要使用SharedPreferences,请确保您传递的上下文不是OnItemClickListener()

您正在努力保存“位置”,以便在另一个classActivity中使用。通过context的{​​{1}}可以帮助您使用Activity

如果来自另一个SharedPreferences的{​​{1}}不是class,您可以使用activity将任意constructor的{​​{1}}传递给context activity 1}}。

尝试实现这些功能,它有助于减少代码并实现可重用性:

class

我将它用于/** * Used to save data in preferences * @param context * @param key * @param value */ public static void saveDataToPreferences(Context context, String key, String value) { SharedPreferences prefs = context.getSharedPreferences("Your package name", Context.MODE_PRIVATE); Editor editor = prefs.edit(); editor.putString(key, value); editor.commit(); } /** * Used to retrieve data from preferences * @param context * @param key * @return */ public static String getDataFromPreferences(Context context, String key) { SharedPreferences prefs = context.getSharedPreferences("Your package name", Context.MODE_PRIVATE); return prefs.getString(key, "default value"); } ,非常有效。您可以传递位置值和常量字符串,例如。保存和检索相同的“位置”。我使用SharedPreferences作为通用数据类型,您可以根据您的要求定义它。

String

答案 3 :(得分:0)

在点击时将值分配给公共静态变量,并在下一个活动中使用它。