【发布时间】:2017-01-05 22:47:56
【问题描述】:
上下文:有一个自定义的 Listview,每个列表项都有一个按钮。当您单击该按钮时,将出现一个带有编辑文本和提交按钮的 alertDialog。这只会在第一次点击时发生,在随后的点击中,Toast 将简单地显示到目前为止它被点击的次数。
当您单击提交按钮时,将出现一个 toast,显示输入到 editText 中的文本以及他们点击它的次数,因为这只会发生在第一次点击时。
p>问题:如果用户在点击提交之前点击了editText,则timesClicked 计数器无法正常工作。我猜它正在休息到0。但是,如果用户不单击editText,则程序正常工作。 0_o 我很茫然。
解决问题的尝试:我将代码简化了很多,试图找出问题所在,这就是我卡住的地方。最初我正在膨胀一个只有编辑文本的视图,然后我只是使用 builder.setPositiveButton。我认为直接在视图中实现按钮会修复它,但似乎并非如此。我已经坚持了一段时间。任何帮助都会很棒
Here is a video of the bug happening
private class OnSubtractClickListener implements View.OnClickListener {
final int id; //id of list item that was clicked
int timesClicked;
Toast toast;
public OnSubtractClickListener(int id, View view) {
super();
this.id = id;
timesClicked = 0;
}
@Override
public void onClick(View view) {
if (timesClicked != 0) {
toast.setText(Integer.toString(timesClicked));
toast.show();
}
else{
toast = Toast.makeText(view.getContext(), "", Toast.LENGTH_SHORT);
final View dialogView = LayoutInflater.from(view.getContext()).inflate(R.layout.dialog_add_notes, null);
AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
builder.setView(dialogView);
builder.setTitle("Subtract cigar?");
builder.setIcon(R.mipmap.monkey_launcher);
final AlertDialog dialog = builder.create();
Button yesButton = (Button)dialogView.findViewById(R.id.dialog_notes_yes_button);
yesButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText editText = (EditText)dialogView.findViewById(R.id.dialog_editText);
String userInput = editText.getText().toString();
String timesClickedString = Integer.toString(++timesClicked);
toast.setText(timesClickedString + ": " + userInput);
toast.show();
dialog.dismiss();
}
});
dialog.show(); //new
}
}
}
【问题讨论】:
-
为了使点击次数回到 0,您必须在某处重新创建点击侦听器。你能在你的代码中显示你在哪里设置点击监听器吗?
-
只有当用户点击对话框中的editText时它才会被重置。否则它工作正常。我在 customlistAdapter 的 bindView 中设置它
-
没有人知道问题所在?在我的应用程序中,正在调用数据库并正在更新列表视图。但随后列表视图实际上恢复到以前的状态。但是数据库已经更新。没有意义。有什么可以取消对列表视图项的更改
-
什么时候创建
OnSubtractClickListener的实例? -
在自定义游标适配器的绑定视图中
标签: android listview android-edittext android-alertdialog customdialog