Android 如何将一个变量用于不同的方法?

Android 如何将一个变量用于不同的方法?,android,variables,methods,Android,Variables,Methods,我在方法setViewValue和setOnItemClickListener中使用变量I时遇到问题。 所以我需要检查表中行的值,然后将其添加到另一个类中。 但是对于这个检查,我需要在两种方法中使用I,或者用另一种方法 你能帮我吗 String[] from = new String[] { DB.COLUMN_MON, DB.COLUMN_YEAR }; int[] to = new int[] { R.id.textMonth, R.id.textYear }; scAdapter =

我在方法setViewValue和setOnItemClickListener中使用变量I时遇到问题。 所以我需要检查表中行的值,然后将其添加到另一个类中。 但是对于这个检查,我需要在两种方法中使用I,或者用另一种方法

你能帮我吗

String[] from = new String[] {  DB.COLUMN_MON, DB.COLUMN_YEAR };
int[] to = new int[] { R.id.textMonth, R.id.textYear };

scAdapter = new SimpleCursorAdapter(this, R.layout.list_item, cursor, from, to);

scAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
    public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
        for (int i=0; i < 98; i++){
            if (cursor.getString(cursor.getColumnIndex(DB.COLUMN_MON)).equals(dataMonths[0]) && cursor.getString(cursor.getColumnIndex(DB.COLUMN_YEAR)).equals(dataYears[i])){
                list.setOnItemClickListener(new OnItemClickListener() {
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                        Intent intent = new Intent(Main_month.this, month.class);
                        intent.putExtra("year", dataYears[i]);
                        intent.putExtra("month", dataMonths[0]);
                        startActivity(intent);
                        finish();
                    }
                });
            }
        }
        return false;
    }
});
list.setAdapter(scAdapter);
String[]from=newstring[]{DB.COLUMN\u MON,DB.COLUMN\u YEAR};
int[]to=newint[]{R.id.textmount,R.id.textwear};
scAdapter=new SimpleCursorAdapter(this,R.layout.list_项,光标,from,to);
scAdapter.setViewBinder(新的SimpleCursorAdapter.ViewBinder(){
公共布尔setViewValue(视图、光标、int-columnIndex){
对于(int i=0;i<98;i++){
if(cursor.getString(cursor.getColumnIndex(DB.COLUMN_MON)).equals(dataMonths[0])和cursor.getString(cursor.getColumnIndex(DB.COLUMN_YEAR)).equals(dataYears[i])){
list.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
意向意向=新意向(主月、本月、班级);
意向。额外(“年”,数据年[i]);
intent.putExtra(“月”,数据月[0]);
星触觉(意向);
完成();
}
});
}
}
返回false;
}
});
列表.setAdapter(scAdapter);
谢谢你的帮助! 我用以下方式解决我的问题:

scAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {

                public boolean setViewValue(View view, final Cursor cursor, int columnIndex) {         
                    list.setOnItemClickListener(new OnItemClickListener() {
                          public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                                Intent intent = new Intent(Main_month.this, month.class);
                                      intent.putExtra("year", cursor.getString(cursor.getColumnIndex(DB.COLUMN_YEAR)));
                                      intent.putExtra("month", cursor.getString(cursor.getColumnIndex(DB.COLUMN_MON)));
                                      startActivity(intent);
                                      finish();                                             
                          }

                    });                                                                                                 
               return false;
               }
          });       
scAdapter.setViewBinder(新的SimpleCursorAdapter.ViewBinder(){
公共布尔setViewValue(视图,最终光标,int columnIndex){
list.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
意向意向=新意向(主月、本月、班级);
intent.putExtra(“年”,cursor.getString(cursor.getColumnIndex(DB.COLUMN_year));
intent.putExtra(“月”,cursor.getString(cursor.getColumnIndex(DB.COLUMN_-MON));
星触觉(意向);
完成();
}
});                                                                                                 
返回false;
}
});       

onClick
方法和其他方法中,只有两种方法可以使用变量

  • 您可以在
    onClick
    方法中声明变量,并将其作为参数传递给需要的其他方法
  • 您可以声明一个类级变量(在两个方法之外),该变量具有两个方法都可以访问的适当范围

  • 如果要使用第二种方法,则需要一个更具描述性的变量名,而不仅仅是
    i

    我想我明白了。您正在将一个项目侦听器添加到
    列表视图
    ,除非您一次又一次地这样做。糟糕。nhgrif基本上回答了眼前的问题。我会告诉你不要循环。在当前上下文中,如果不声明全局变量,则无法保存
    i
    。仅设置一次
    setOnItemClickListener
    !这就是
    位置
    变量作为参数包含的原因;所以您知道单击了哪个视图。检查一下。希望这有助于澄清这一点


    编辑:我可能应该澄清一下,不要循环和设置每个项目侦听器。设置一次列表器,如果有必要,在click listener(即click listener)中循环。

    您有一些主要的格式问题,因此很难阅读您的问题。我在setViewValue中声明了一个变量I。我在那里用它。我怎样才能在方法onItemClick中使用这个变量呢?所以使用“setOnItemClickListener”的想法曾经对我很有帮助。程序在没有变量i的情况下工作。谢谢你)我没有使用变量I就意识到了我的问题。但这个答案是正确的。