2017-04-19 7 views
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(); 

      } 
     }); 
    } 

答えて

0
  // Set up the buttons 


     builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          addViewToLayout(); 
         } 
        }); 

     void addViewToLayout(){ 
    notesIndex = new Integer(notesIndex + 1); 
         noteText = input.getText().toString(); 
     TextView a = new TextView(view.getContext()); 
           a.setOnClickListener(new View.OnClickListener() { 
       @Override 
      public void onClick(View v) { 
         showAlertToDelete(v) 
       } 
    }); 
         a.setText(noteText); 
         a.setHeight(150); 
         a.setGravity(Gravity.CENTER); 
         myLayout.addView(a); 
         TextViews.add(a); 
         noteTexts.add(noteText); 

     } 

void showAlertToDelete(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(v); 
        } 
       }); 
       builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         dialog.cancel(); 
        } 
       }); 

       builder.show(); 
} 
関連する問題