0
私はしばらくの間これを苦労して、どのように進むべきかのヒントを探しました。私は新しいテキストビューを作成する追加ボタンを持つフラグメントを作成しようとしています、そして、textviewをクリックすると、それを削除するオプションがあります。Android Studioのダイナミックリストからテキストビューを追加したり削除したりできますか?
textviewsを追加すると問題なく動作します。問題は、各textviewのリスナーを設定し、それらを削除するオプションを追加するforeachループにあります。現在のパラメータfinalを宣言する必要があります。削除しても機能しません。しかし、私が最後に宣言すれば、リストに新しいテキストビューを追加することはできないので、リスナーはいらないでしょう。
誰かが私に何らかのヒントを与えることができれば、それは非常に高く評価されます。
ここにリストと追加部分があります。
//Variables
List<TextView> TextViews = new ArrayList<TextView>();
@Override
//Put button functionality here
public void onClick(View v) {
final LinearLayout myLayout = (LinearLayout) view.findViewById(R.id.linearlayout);
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle("Title");
// Set up the input/
final EditText input = new EditText(getContext());
input.setInputType(InputType.TYPE_CLASS_TEXT);
builder.setView(input);
// Set up the buttons
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
notesIndex = new Integer(notesIndex + 1);
noteText = input.getText().toString();
TextView a = new TextView(view.getContext());
a.setText(noteText);
a.setHeight(150);
a.setGravity(Gravity.CENTER);
myLayout.addView(a);
TextViews.add(a);
noteTexts.add(noteText);
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
そして、ここでそれぞれのTextViewのリスナーを設定しますforeachループです。両方ともOnCreateViewで呼び出されます。
for (final TextView current : TextViews) {
current.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle("Delete?");
// Set up the buttons
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
myLayout.removeView(current);
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
}
});
}