如何使用 FirebaseRecyclerAdapter 将数据片段发送到片段
How can I send the data fragment to fragment with FirebaseRecyclerAdapter
我想把LibraryFragment中的String数据传给LibrarySongFragment
图书馆片段:
public class LibraryFragment extends Fragment {
private FirebaseRecyclerAdapter mAdapter;
@Nullable
@Override
public New onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
...
mAdapter = new LibraryAdapter(options, context);
recyclerView.setAdapter(mAdapter);
}
}
库适配器:
public class LibraryAdapter extends FirebaseRecyclerAdapter<MyModel, LibraryAdapter.MyViewHolder> {
...
public class MyViewHolder extends RecyclerView.ViewHolder {
public MyViewHolder(View view) {
super(view);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String title = getItem(getAdapterPosition()).getTitle();
((FragmentActivity) context).getSupportFragmentManager().beginTransaction()
.addToBackStack(null).replace(R.id.library_coordinator, new LibrarySongFragment()).commit();
}
});
}
}
}
我想在 LibraryAdapter 中发送 MyViewHolder 中的标题。你可以看到"String title = getItem(getAdpaterPosition()).getTitle();"。只需发送到 LibrarySongFragment 并 post 它在 fragment_song_library.xml TextView 中。
您只需创建数据包并在片段对象中设置参数。我修改了你的代码。请参考
public class MyViewHolder extends RecyclerView.ViewHolder {
public MyViewHolder(View view) {
super(view);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String title = getItem(getAdapterPosition()).getTitle();
FragmentManager fragmentManager = ((Activity)context).getSupportFragmentManager();
Fragment fragment;
LibrarySongFragment librarySongFragment = new LibrarySongFragment();
Bundle bundle = new Bundle();
bundle.putString("KeyTitle",title);
librarySongFragment.setArguments(bundle);
fragmentManager.beginTransaction()
.addToBackStack(null).replace(R.id.library_coordinator, librarySongFragment).commit();
}
});
}
}
创建界面
在您要发送数据的片段中
SendMessage SM;
public interface SendMessage{
void Senddata(String message,Boolean sent);
}
将此方法覆盖到同一片段
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
SM = (SendMessage) getActivity();
} catch (ClassCastException e) {
throw new ClassCastException("Error in retrieving data. Please try again");
}
}
将此片段实现到包含这些片段的 activity
public class Activity extends AppCompatActivity implements sendfragment.SendMessage
将消息覆盖到 activity
@Override
public void Senddata(String message,Boolean sent) {
fragtwo f = (fragtwo) getSupportFragmentManager().findFragmentByTag(tag);
if(sent==true){
Toast.makeText(this, "data transfered", Toast.LENGTH_SHORT).show();
f.displaydata(message);
}
}
为发送数据创建public方法
public void displaydata(String massage){
String massageformat="received data is "+massage;
}
这是 android
中片段之间的通信方式
我想把LibraryFragment中的String数据传给LibrarySongFragment
图书馆片段:
public class LibraryFragment extends Fragment {
private FirebaseRecyclerAdapter mAdapter;
@Nullable
@Override
public New onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
...
mAdapter = new LibraryAdapter(options, context);
recyclerView.setAdapter(mAdapter);
}
}
库适配器:
public class LibraryAdapter extends FirebaseRecyclerAdapter<MyModel, LibraryAdapter.MyViewHolder> {
...
public class MyViewHolder extends RecyclerView.ViewHolder {
public MyViewHolder(View view) {
super(view);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String title = getItem(getAdapterPosition()).getTitle();
((FragmentActivity) context).getSupportFragmentManager().beginTransaction()
.addToBackStack(null).replace(R.id.library_coordinator, new LibrarySongFragment()).commit();
}
});
}
}
}
我想在 LibraryAdapter 中发送 MyViewHolder 中的标题。你可以看到"String title = getItem(getAdpaterPosition()).getTitle();"。只需发送到 LibrarySongFragment 并 post 它在 fragment_song_library.xml TextView 中。
您只需创建数据包并在片段对象中设置参数。我修改了你的代码。请参考
public class MyViewHolder extends RecyclerView.ViewHolder {
public MyViewHolder(View view) {
super(view);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String title = getItem(getAdapterPosition()).getTitle();
FragmentManager fragmentManager = ((Activity)context).getSupportFragmentManager();
Fragment fragment;
LibrarySongFragment librarySongFragment = new LibrarySongFragment();
Bundle bundle = new Bundle();
bundle.putString("KeyTitle",title);
librarySongFragment.setArguments(bundle);
fragmentManager.beginTransaction()
.addToBackStack(null).replace(R.id.library_coordinator, librarySongFragment).commit();
}
});
}
}
创建界面 在您要发送数据的片段中
SendMessage SM;
public interface SendMessage{
void Senddata(String message,Boolean sent);
}
将此方法覆盖到同一片段
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
SM = (SendMessage) getActivity();
} catch (ClassCastException e) {
throw new ClassCastException("Error in retrieving data. Please try again");
}
}
将此片段实现到包含这些片段的 activity
public class Activity extends AppCompatActivity implements sendfragment.SendMessage
将消息覆盖到 activity
@Override
public void Senddata(String message,Boolean sent) {
fragtwo f = (fragtwo) getSupportFragmentManager().findFragmentByTag(tag);
if(sent==true){
Toast.makeText(this, "data transfered", Toast.LENGTH_SHORT).show();
f.displaydata(message);
}
}
为发送数据创建public方法
public void displaydata(String massage){
String massageformat="received data is "+massage;
}
这是 android
中片段之间的通信方式