gpt4 book ai didi

java - 在 setOnCheckedChangeListener 方法内执行 Toast 消息

转载 作者:行者123 更新时间:2023-12-01 09:50:56 25 4
gpt4 key购买 nike

我有一系列切换按钮。切换按钮与游标中的行数之间存在 1 比 1 的比例。我将 setId() 分配给数组中的每个切换按钮,并使用光标返回的数据。

我的更新总是更新光标中的 1 行,我正在尝试使用一些 toast 消息来解决此问题。问题是我无法显示 toast 消息。我知道该方法是监听器正在触发,因为我的 sql 更新正在运行,只是它是错误的行。这是我的代码。

toggleButton[i].setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
ContentValues values = new ContentValues(); //Create the new content values object for data input
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if(isChecked)
{
Toast.makeText(Cart.this.getBaseContext(), "hello", Toast.LENGTH_SHORT).show();
toggleButton[buttonView.getId()].setTextOn("Yes"); //Set the text when the button changes state to on
values.put(Contract.ItemsTable.COLUMN_ONE, 1); //Update the record on the 'status' column to true
String[] itemId = {String.valueOf(buttonView.getId())}; //
db.update(Contract.ItemsTable.TABLE_NAME, values, SmartCartContract.ItemsTable.COLUMN_ITEM_ID + " LIKE ?", itemId); //Update the DB record
} else
{
Toast.makeText(Cart.this.getBaseContext(), "hello", Toast.LENGTH_SHORT).show();
toggleButton[buttonView.getId()].setTextOff("No"); //Set the text when the button changes state to off
values.put(SmartCartContract.ItemsTable.COLUMN_TWO, 0); //Update the record on the 'status' column to false
String[] itemId = {String.valueOf(buttonView.getId())}; //
db.update(Contract.ItemsTable.TABLE_NAME, values, Contract.ItemsTable.COLUMN_ITEM_ID + " LIKE ?", itemId); //Update the DB record
}
}
});

Cart.this.getBaseContext() 是我对我见过的使用选项的最后一次尝试。这是我做错了吗?

我正在动态构建这些按钮:

toggleButton[i] = new ToggleButton(this); //Create new ToggleButton control for this row    
toggleButton[i].setGravity(Gravity.CENTER); //Align the text in the middle
toggleButton[i].setId(cursor.getInt(cursor.getColumnIndex("itemId")));
if (cursor.getInt(cursor.getColumnIndex("itemInCart")) == 1) //Check if marked 'in Cart'

最佳答案

不确定数据库的问题是什么,但这里是一些带有工作Toast的ToggleButtons的最小示例。

public class CartActivity extends AppCompatActivity {

private CompoundButton.OnCheckedChangeListener listener = new CompoundButton.OnCheckedChangeListener() {

ContentValues cv;

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
cv = new ContentValues();
String key;
int val;

if (isChecked) {
key = "col1";
val = 1;
} else {
key = "col2";
val = 0;
}

cv.put(key, val);
String[] itemId = {String.valueOf(buttonView.getId())};
Toast.makeText(CartActivity.this,
String.format("[%d] %s {%s}", buttonView.getId(), isChecked, cv),
Toast.LENGTH_SHORT).show();
}
};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

LinearLayout view = new LinearLayout(this);
view.setOrientation(LinearLayout.VERTICAL);

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

ToggleButton[] buttons = new ToggleButton[3];
for (int i = 0; i < buttons.length; i++) {
ToggleButton toggle = new ToggleButton(this);

toggle.setLayoutParams(lp);
toggle.setId(i);
toggle.setGravity(Gravity.CENTER);
toggle.setTextOn(String.format("On [%d]", i));
toggle.setTextOff(String.format("Off [%d]", i));
toggle.setChecked(false);
toggle.setOnCheckedChangeListener(listener);

buttons[i] = toggle;
view.addView(toggle);
}

setContentView(view);
}
}

关于java - 在 setOnCheckedChangeListener 方法内执行 Toast 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37604180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com