0

viewFlipperを使用してテキストを反転するアプリケーションを作成しようとしています。コンテンツはカーソルから入力され、ビューはプログラムで追加されます。

各ビューは同じxmlレイアウトファイルに基づいており、各ビューには2つのボタンが含まれています。

1つのボタンを押すと、onClickイベントが発生しますが、カスタム変数をonclickイベントに渡すにはどうすればよいですか?

私は変数IDの魔女を持っています。ビューごとに異なる必要があり、ボタンを押すとこの値を取得する必要があります。

これが私のコードです:

Cursor cur = db.rawQuery(
                "SELECT * FROM items WHERE id_cat = " + id_cat + "", null);

        TextView t = new TextView(this);

        int total_items = cur.getCount();
        if (cur.moveToFirst()) {
            do {
                String data = cur.getString(cur.getColumnIndex("item_text"));
                String item_id= cur.getString(cur.getColumnIndex("_id"));

                int current = cur.getPosition()+1;

                // load xml template
                 LayoutInflater inflater = LayoutInflater.from(this);
                 View v = inflater.inflate(R.layout.item_flip, null, false);
                     ToggleButton btnf=(ToggleButton)v.findViewById(R.id.favorite);
                 btnf.setOnClickListener(new OnClickListener() { 

                        public void onClick(View v) {
                            switch(v.getId()){
                             case R.id.favorit:
                                // switch  favorite
                                SQLiteDatabase db = dbAdapter.openDataBase();
                                if(status==1) {
                       //// HERE I NEED THE ITEM_ID DISTINCT FOR EACH VIEW
                                    db.execSQL("UPDATE items SET favorite = 0 WHERE items._id = " + item_id);

                                 } else {
                                db.execSQL("UPDATE items SET favorite = 1 WHERE items._id = " + item_id);

                                 }

                                System.out.println("Switch");
                                db.close();
                             break;

                            }       
                        }
                      });


                 vf.addView(v);

            } while (cur.moveToNext());

ボタンは正常に機能しますが、アイテムIDは渡されません。

ビューフリッパーに5つのアイテムがある場合、item_idは1、2、3、....次に5になり、item_idを押したボタンのマザーウィッチは最後のビューのIDになりません。

解決策があれば事前に感謝します。

4

1 に答える 1

1

ああ、神様、

ここに質問を投稿するのは3回目で、次の10分で自分で解決策を修正します:)

誰かが似たようなものを必要とする場合、彼は解決策です:

XMLにタグを追加しました:

        <ToggleButton
        android:id="@+id/favorite"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@+id/share"
        android:layout_marginTop="6dip"
        android:textOn="Favorit"
        android:textOff="Favorit"
        android:text="Favorit"
        android:tag="999" />

次に、指定されたビューを作成するときに、分離された各ビューのタグをitem_idで変更します。

       ToggleButton swc_favorite = (ToggleButton) v.findViewById(R.id.favorite);

             if(status==1) {
                 swc_favorit.setChecked(true);
             } else {
                 swc_favorit.setChecked(false);
             }
             // set favorit tag
             swc_favorit.setTag(item_id);

次にクリックリスナーで、クリックしたビューからそのタグを取得します。

 final ToggleButton btnf=(ToggleButton)v.findViewById(R.id.favorite);
             btnf.setOnClickListener(new OnClickListener() {  
 public void onClick(View v) {
    String item_id_clicked = (String) btnf.getTag();
 ........

ToggleButtonbtnfをfinalとして機能するように設定する必要があります。

おかげで、あなたの何人かの助けになることを願っています。

于 2013-02-17T15:24:22.527 に答える