2017-01-07 2 views
3

Ich möchte als AutoCompleteTextview arbeiten. Aber ich verwende keine Auto-Volltextansicht in meinem Projekt. Ich habe edit Text verwendet und es den Wert für das Sortieren des Wertes des Adapters mit den Werten des Adapters Ich erstelle eine dynamische Schaltfläche. Aber eigentlich möchte ich dynamisch erstellten Button löschen. Wenn ein Benutzer in diesem Fall einen neuen Wert in den Bearbeitungstext eingibt, sortiert er einen neuen Wert im Adapter entsprechend der Schaltfläche, die erstellt werden soll. Mein Problem ist jedoch, dass die dynamisch erstellte Schaltfläche nicht gelöscht wird, wenn ein Benutzer neuen Text in die Bearbeitungsansicht eingibt. Es muss aussehen wie folgt aus:Wie kann ich hinzufügen und Layout pragmatisch in Android entfernen?

enter image description here

if (!s.equals("")) { 
final String query = s.toString().trim(); 
filteredTags.clear(); 
((ViewManager) btnTag.getParent()).removeView(btnTag); 


for (int i = 0; i < TagArray.size(); i++) { 

    final String tagName = TagArray.get(i).gettagName(); 

    if (tagName.contains(query)) { 

     filteredTags.add(TagArray.get(i)); 

    } 


} 

count1 = filteredTags.size(); 

layout = (LinearLayout) dialog.getCustomView().findViewById(R.id.layoutTags); 
layout.setOrientation(LinearLayout.VERTICAL); //Can also be done in xml by android:orientation="vertical" 
layout.setWeightSum(1); 


float rowneed = ((float) count1/5); 
k = 0; 
for (int i = 0; i < ceil(rowneed); i++) { 
    row1 = new LinearLayout(getContext()); 
    row1.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 
    /* layout.setVisibility(View.VISIBLE); 
    row.setVisibility(View.VISIBLE);*/ 
    for (int j = 0; j < 5; j++) { 

     btnTag = new Button(getContext()); 
     btnTag.setHeight(15); 
     btnTag.setWidth(0); 
     btnTag.setMinimumWidth(155); 
     btnTag.setMinimumHeight(135); 
     mTagList1 = new ArrayList<>(); 


     if (k < count1) { 

      btnTag.setText(filteredTags.get(k).gettagName()); 
      btnTag.setId(k); 

      k++; 


      btnTag.setVisibility(View.VISIBLE); 

     } else { 
      btnTag.setVisibility(View.INVISIBLE); 
     } 
     Log.e("count", " " + k + " " + count1 + " " + ceil(rowneed) + " " + edtTag.getText().toString()); 
     btnTag.setTextSize(7); 
     btnTag.setGravity(0); 


     row1.addView(btnTag); 


    } 

    layout.addView(row1); 


} 
for (int btnId = 0; btnId < filteredTags.size(); btnId++) { 

    btnTag = (Button) dialog.getCustomView().findViewById(btnId); 
    final int finalId1 = btnId; 

    btnTag.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      TagNameArray.add(new Tags(filteredTags.get(finalId1).gettagId(), filteredTags.get(finalId1).gettagName())); 
      // Log.e("button","Button clicked index = " + finalId +" "+ TagArray.get(finalId1).gettagName()+" "+TagNameArray.size()); 
     } 
    }); 
} 

} 
+0

denke ich, jemand Ihre Frage bereits anwered hat http://stackoverflow.com/questions/3995215/add-and-remove-views-in-android-dynamisch – Bethan

Antwort

2

diese Codezeile hinzufügen:
layout.removeAllViews(); layout.invalidate(); row.removeAllViews(); row.invalidate();

+0

Danke. Es hat funktioniert –

0

Diese dir helfen könnten, geben Sie mir ein Feedback für das, was du hast, wünsche ich Ihnen helfen

zum Beispiel einen dynamischen Tag für btnTag gesetzt

btnTag.setTag(DynamicTagInt++); 

und dann

row1.removeView(btnTag.findViewById(DynamicTagInt)); 
    //DynamicTagInt= the desired button that you want to delete 

oder durch die ID der Schaltfläche zum Beispiel

row1.removeView(btnTag.findViewWithTag(k)); 
+0

es funktioniert nicht für mich –

+0

gibt es Ihnen einen Fehler? –

+0

Nein, es gibt keinen Fehler. –

Verwandte Themen