簡體   English   中英

如何添加以及在Android中實際刪除布局?

[英]How can i add as well as remove layout pragmatically in android?

我想作為AutoCompleteTextview工作。 但我沒有在我的項目中使用自動完整文本視圖。 我使用了編輯文本,並使用適配器的值對適配器的值進行排序,我正在創建一個動態按鈕。 但實際上,我想刪除動態創建的按鈕。 當用戶在編輯文本中輸入新值時,它會根據必須創建的按鈕在適配器中對新值進行排序。 但是,我的問題是,當用戶在編輯文本視圖上輸入新文本時,不會刪除動態創建的按鈕。 它必須看起來像這樣:

在此輸入圖像描述

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

}

添加以下代碼行:
layout.removeAllViews(); layout.invalidate(); row.removeAllViews(); row.invalidate();

這可能會對你有所幫助,給我一個反饋,希望我幫助你

例如,為btnTag設置動態標簽

btnTag.setTag(DynamicTagInt++);

然后

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

或者按例如按鈕的ID

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM