check to see if a view exists from a layout inflater befor adding another one

…衆ロ難τιáo~ 提交于 2020-01-24 03:54:49

问题


In my android project, I am dynamically adding forms to my linear layout and then destroying them when I am done with a button. However, When I click the "add button" It infinitely adds more forms although I want only one at a time. How can i chec if my linearLayout "accounts" has been added to the view or if it exists in the view at the time? This is the code to add the view. How can I check to see if the view already exists before I add the view?

  public void showForm(String form){
        View view;
        LayoutInflater inflater    
          =(LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(R.layout.forms, null);
        LinearLayout item = (LinearLayout) view.findViewById(R.id.accounts);
        l.addView(item);
   }

回答1:


Option #1: Use boolean accountsAdded=false;, setting it to true when needed

Option #2: Use l.findViewById(R.id.accounts) and see if that returns null

BTW, you will crash if the root widget of R.layout.forms is not the R.id.accounts View, so please add view, not item, to l via addView().




回答2:


You can check from ViewGroup indexOfChild(View view) method if the child is exist or not. it returns a positive integer representing the position of the view in the group, or -1 if the view does not exist in the group

ViewGroup rootLayout = (ViewGroup) getWindow().peekDecorView();
LayoutInflater li = LayoutInflater.from(this);
View myView= li.inflate(R.layout.recorder, null);
if(rootLayout.indexOfChild(myView) == -1)
    rootLayout.addView(myView);


来源:https://stackoverflow.com/questions/20432749/check-to-see-if-a-view-exists-from-a-layout-inflater-befor-adding-another-one

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!