コンテキスト:カスタムリストビューがあり、各リストアイテムにはボタンがあります。ボタンをクリックするとalertDialogが表示され、編集テキストと送信ボタンが表示されます。これは最初のクリックでのみ発生し、その後のクリックではそれまでにクリックされた回数だけトーストが表示されます。Android- EditTextでカスタムアラートダイアログを修正するヘルプ
submitボタンをクリックすると、editTextに入力されたテキストとクリック回数が表示されます。これは最初のクリックでのみ発生する可能性があるため、常に1になります。
問題:「submit」をクリックする前にeditTextをクリックするほど、timesClickedカウンタが正しく動作しません。それは0に戻っていますね。しかし、ユーザがでなければをクリックしてください。編集テキストをクリックすると、プログラムは正常に動作します。 0_o私は迷っています。
解決しようとする試み:問題を特定して特定するためにコードを単純化しました。これが私が立ち往生した場所です。もともと私は、テキストを編集しただけのビューを膨張させていました。そして、私は単にbuilder.setPositiveButttonを使っていました。私は、ビューに直接ボタンを実装するとそれを修正すると思ったが、そうではないようだ。私はしばらくこれに固執しています。すべてのヘルプは、ダイアログを拡張するクラスを作ることができ
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に戻ってクリックどこかでクリックリスナーを再作成してください。あなたのコードでクリックリスナーをどこに設定しているかを表示できますか? – AdamMc331
これは、ユーザーがダイアログ内のeditTextをクリックしたときにのみリセットされます。それ以外の場合は正常に動作します。私はcustomlistAdapterのbindViewに設定しています – Dillon
誰も問題を知らないのですか?私のアプリケーションでは、データベースが呼び出されており、リストビューが更新されています。しかし、リストビューは実際に元の状態に戻ります。ただし、データベースは更新されています。意味がありません。リストビュー項目への変更を取り消すことができるものはありますか – Dillon