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

私はあなたがしていることを見ていると思います。にアイテムリスナーを追加してListViewいますが、何度も何度も繰り返しています。悪い。nhgrif は基本的に当面の質問に答えました。ループしないでくださいと答えます。i現在のコンテキストでは、グローバル変数を宣言しないと保存できません。設定はsetOnItemClickListener一度だけ!positionこれが変数がパラメータとして含まれる理由です。どのビューがクリックされたかがわかります。ドキュメントを確認してください。うまくいけば、それがそれを明確にするのに役立ちます.

編集:おそらく明確にする必要があります。ループしてすべてのアイテムリスナーを設定しないでください。リスターを1回設定し、必要に応じてクリックリスナー内でループします。

于 2013-10-31T00:29:53.680 に答える