有什么方法可以替换单个片段的数据而不替换片段?

问题描述 投票:0回答:1
public void onBindViewHolder(@NonNull final myViewHolder holder, final int position) {

    holder.tvItem.setText(itemList.get(position).getmTitle());
    Picasso.get().load(itemList.get(position).geturl()).into(holder.imgFlag);
    final ModelClass model= itemList.get(position);
    holder.cardView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DataFragment dataFragment= new DataFragment();
            ((AppCompatActivity)mContext).getSupportFragmentManager()
                    .beginTransaction()
                    .replace(R.id.fragment,dataFragment)
                    .commit();
                    Bundle bundle= new Bundle();
                    bundle.putSerializable("model", model);
                    dataFragment.setArguments(bundle);
                }
            });
    }
}
android android-studio android-fragments fragment android-fragmentactivity
1个回答
0
投票

您可以在片段上创建用于更新它的方法,如果该片段已经存在,请使用该方法。

示例:

public void onBindViewHolder(@NonNull final myViewHolder holder, final int position) {

    holder.tvItem.setText(itemList.get(position).getmTitle());
    Picasso.get().load(itemList.get(position).geturl()).into(holder.imgFlag);
    final ModelClass model= itemList.get(position);
    holder.cardView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Activity activity = ((AppCompatActivity)mContext);
            Fragment fragment = activity.getSupportFragmentManager().findFragmentById(R.id.fragment);
            // Check if the fragment already exists, if so, just update it
            if (fragment != null) {
                DataFragment dataFragment = (DataFragment) fragment;
                dataFragment.replaceData(model);
            }
            else { // Create new instance
                DataFragment dataFragment= new DataFragment();
                activity.getSupportFragmentManager()
                        .beginTransaction()
                        .replace(R.id.fragment,dataFragment)
                        .commit();
                Bundle bundle = new Bundle();
                bundle.putSerializable("model", model);
                dataFragment.setArguments(bundle);
            }
        });
    }
}

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.