【问题标题】:How to use one variable for different methods?如何将一个变量用于不同的方法?
【发布时间】:2013-10-31 00:15:36
【问题描述】:

我在方法 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);

感谢您的帮助! 我这样解决我的问题:

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;
               }
          });       

【问题讨论】:

  • 您有一些主要的格式问题,导致您的问题难以阅读。
  • 我在 setViewValue 中声明了一个变量 i。我在那里使用它。如何在方法 onItemClick 中使用此变量?

标签: android variables methods


【解决方案1】:

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

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

如果您要使用第二种方法,则需要一个比i 更具描述性的变量名。

【讨论】:

  • 我在不使用变量 i 的情况下意识到了我的问题。但这个答案是真的。
【解决方案2】:

我想我明白你在做什么。您正在向您的ListView 添加一个项目侦听器,除非您一遍又一遍地这样做。坏的。 nhgrif 基本上回答了手头的问题。我会告诉你不要循环来回答。在其当前上下文中,您无法在不声明全局变量的情况下保存 i。只设置一次setOnItemClickListener!这就是 position 变量作为参数包含的原因;所以你知道点击了哪个视图。检查documentation。希望这有助于澄清它。

编辑:我可能应该澄清一下,不要循环并设置每个项目侦听器。设置监听器 ONCE,如果需要,在点击监听器中循环。

【讨论】:

  • 所以使用“setOnItemClickListener”的想法曾经真的帮助了我。该程序在没有变量 i 的情况下工作。谢谢))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-06
相关资源
最近更新 更多