如何在android上的viewflipper视图中获取关于按钮的特定信息?

时间:2013-02-17 15:05:01

标签: android button viewflipper onclicklistener

我尝试制作一个使用viewFlipper来翻转某些文本的应用程序。 内容是从光标填充的,并且视图是以编程方式添加的。

每个视图都基于相同的xml布局文件,每个视图包含2个按钮。

当我按下一个按钮时,我会触发onClick事件,但是如何将自定义变量传递给onclick事件?

我有一个var 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。

如果我的viewflipper中有5个项目,则item_id将变为1,然后是2,然后是3,然后是....然后5 按下item_id的按钮没有任何其他错误,将是最后一个视图的ID。

如果您有任何解决方案,请提前致谢。

1 个答案:

答案 0 :(得分:1)

OMG,

是我第三次在这里发布问题,在接下来的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);

接下来在clicklistener中,我从点击的视图中获取该标记:

 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();
 ........

需要将ToggleButton btnf设置为最终工作。

感谢并希望能为你们中的一些人提供帮助。