我尝试制作一个使用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。
如果您有任何解决方案,请提前致谢。
答案 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设置为最终工作。
感谢并希望能为你们中的一些人提供帮助。