Fragment replacing in RecyclerView item

后端 未结 2 1781
伪装坚强ぢ
伪装坚强ぢ 2020-11-28 10:37

In my RecyclerView I need replace part of my item to my fragment. But replacing only first item in recycler view. What I am doing is wrong?

My conta

2条回答
  •  猫巷女王i
    2020-11-28 11:23

    I finnaly found solution. The problem is I set a common container id. But in recycler view need to set unique container id for each item.

    So, my code now this:

    MyFragment fragment = MyFragment.newInstance("fragment1");
    fragmentManager.beginTransaction().replace(UNIQUE_CONTAINER_ID, fragment).commit();
    

    If someone will be useful, here is my complete code (implementation fragment in recycler view):

    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) 
    {
    
    ...
    
    // Delete old fragment
    int containerId = holder.mediaContainer.getId();// Get container id
    Fragment oldFragment = fragmentManager.findFragmentById(containerId);
    if(oldFragment != null) {
        fragmentManager.beginTransaction().remove(oldFragment).commit();
    }
    
    int newContainerId = View.generateViewId();// Generate unique container id
    holder.mediaContainer.setId(newContainerId);// Set container id
    
    // Add new fragment
    MyFragment fragment = MyFragment.newInstance("fragment1");
    fragmentManager.beginTransaction().replace(newContainerId, fragment).commit();
    
    ...
    
    }
    

    Upd.: Instead of using your own method to generate a unique id, it is recommended to use View.generateViewId()

提交回复
热议问题