Android 如何更改适配器回收视图中的片段?
我想在单击adapter item RecyclerView时更改片段,我已使用片段事务,但片段未更改 如果你已经解决了这样的问题,请分享。 多谢各位 这是我的密码Android 如何更改适配器回收视图中的片段?,android,android-fragments,android-recyclerview,Android,Android Fragments,Android Recyclerview,我想在单击adapter item RecyclerView时更改片段,我已使用片段事务,但片段未更改 如果你已经解决了这样的问题,请分享。 多谢各位 这是我的密码 @Override public void onBindViewHolder(final ViewHolder holder, final int position) { Handler handler = new Handler(); final Runnable run = new Runnable()
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
Handler handler = new Handler();
final Runnable run = new Runnable() {
@Override
public void run() {
String urlThumbnails = list_data.get(position).get("Thumbnails");
if(urlThumbnails != null){
Glide.with(context)
.load(urlThumbnails)
.into(holder.thumbnailImg);
}
holder.title.setText(list_data.get(position).get("Title"));
holder.itemCount.setText(list_data.get(position).get("ItemCount")+" Videos");
}
};
handler.post(run);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String PlaylistId = list_data.get(position).get("Id");
switchFragment(PlaylistId);
}
});
}
切换方法
private void switchFragment(String id){
playlistFragment = new PlaylistFragment();
Bundle bundle = new Bundle();
bundle.putString("Id",id);
playlistFragment.setArguments(bundle);
Log.d("response playlist", id);
if(context != null){
FragmentManager fragmentManager = context.getActivity().getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.fragment_container,playlistFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
}
然后改变:
FragmentManager fragmentManager = context.getSupportFragmentManager();
对于backhandle,在onBackPressed
中写入以下条件和该活动中的方法:
if (!(findFragment() instanceof PlayListFragment){
replaceHomeFragment(ListFragment());
} else {
super.onBackPressed();
}
....
....
public void replaceDetailFragment(Fragment fragment) {
getSupportFragmentManager().beginTransaction().replace(R.id.frm_detail, fragment).commit();
}
public Fragment findFragment() {
return getSupportFragmentManager().findFragmentById(R.id.fragment_container);
}
您需要确保条件语句中的代码是否正在执行。您正在使用
Fragment
或v4。Fragment
?@ShubhamVala我使用v4。Fragment@stevencaesar您可以将接口对象从片段/活动传递给适配器,并在适配器的onclick中调用侦听器方法,并在中实现侦听器a/f然后在片段或ActivityOK中编写您自己的开关片段逻辑,谢谢Shubham。你们能帮我把第二个碎片压回第一个碎片吗