2017-01-07 5 views
3

Я хочу работать как AutoCompleteTextview. Но я не использую автоматический полный текст в моем проекте. Я использовал текст редактирования и беря его значение для сортировки значения адаптера, используя эти значения адаптера. Я создаю динамическую кнопку. Но на самом деле, я хочу удалить динамически созданную кнопку. Когда пользователь вводит новое значение в текстовом редакторе, в этом случае он сортирует новое значение в адаптере в соответствии с кнопкой, которую необходимо создать. Но, моя проблема заключается в том, что динамически созданная кнопка не удаляется, когда пользователь вводит новый текст при редактировании текстового представления. Он должен выглядеть как этот:Как я могу добавить и прагматично удалять макет в андроиде?

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

Я думаю, что кто-то уже anwered ваш вопрос http://stackoverflow.com/questions/3995215/add-and-remove-views-in-android-dynamically – Bethan

ответ

2

Добавьте эту строку кода:
layout.removeAllViews(); layout.invalidate(); row.removeAllViews(); row.invalidate();

+0

Спасибо. –

0

Это может помочь вам, дайте мне обратную связь для того, что вы получили, хочу ли я помочь вам

установить динамический тег для btnTag, например

btnTag.setTag(DynamicTagInt++); 

, а затем

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

или идентификатор кнопки, например

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

он не работает для меня –

+0

это дает вам ошибку? –

+0

Нет, это не дает никаких ошибок. –

Смежные вопросы