0

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

2 回答 2

0

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

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

如果你要使用第二种方法,你需要一个比i.

于 2013-10-31T00:27:01.453 回答
0

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

编辑:我可能应该澄清一下,不要循环和设置每个项目监听器。设置侦听器 ONCE,然后在必要时在点击侦听器内循环。

于 2013-10-31T00:29:53.680 回答