2017-04-19 128 views
0

我一直在掙扎了一會兒,尋找任何提示如何進行。我試圖創建一個具有添加按鈕,這將創建一個新的TextView和點擊TextView的時候,你就必須刪除它的選項片段。在Android Studio中添加和刪除動態列表中的文字視圖?

添加textviews工作正常。問題在於爲每個文本視圖設置偵聽器的foreach循環,並添加了刪除它們的選項。這迫使我聲明當前的參數是最終的,否則刪除將不起作用。但是,如果我做的聲明它最後的話,我不能添加任何新textviews到列表中,所以他們不會有聽衆。

因此,如果任何人都可以給我某種暗示,這將非常感激。

這裏的列表和添加的部分。

//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();

這裏是foreach循環,設置了聽衆對每個TextView的。它們都在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(); 
} 
相關問題