在Android中将子RecyclerView / ListView添加到父RecyclerView项

我的应用程序包含MyPostFragment,在其中插入了当前用户的所有帖子。

我要

  1. 在其他用户发送的请求中,单击父RecyclerView项目并在Firebase firestore的帮助下将其添加到子列表/子RecyclerView中。

代码为

MyPostsFragment

public class MyPostsFragment extends Fragment {
private RecyclerView my_list;

private List<AllPosts> posts_list;
private List<String> accept_request;
private static final String TAG = "Log";

private FirebaseFirestore firebaseFirestore;

private String u_id,id,message,p_id,a,b;

private FirebaseAuth mAuth;

private UserRecyclerAdapter userRecyclerAdapter;

public MyPostsFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
    mAuth = FirebaseAuth.getInstance();
    u_id = mAuth.getcurrentUser().getUid();
    firebaseFirestore = FirebaseFirestore.getInstance();
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_my_posts,container,false);
    my_list = view.findViewById(R.id.myPostss);

    // textPop = (TextView)view.findViewById(R.id.textMessage);
    posts_list = new ArrayList<>();
    accept_request = new ArrayList<>();
    userRecyclerAdapter = new UserRecyclerAdapter(posts_list,accept_request);
    my_list.setLayoutManager(new LinearLayoutManager(container.getcontext()));
    my_list.setadapter(userRecyclerAdapter);

    firebaseFirestore.collection("Foody_Post").whereEqualTo("u_id",u_id).get()
            .addOnCompleteListener(new OnCompleteListener<Querysnapshot>() {
                @Override
                public void onComplete(@NonNull Task<Querysnapshot> task) {
                    if(task.isSuccessful()){
                        for (final Documentsnapshot d : task.getResult()){
                            p_id = d.getId();
                            final String date = d.getString("date");
                            final String msg = d.getString("message");
                            final String rs = d.getString("price");
                            final String pc = d.getString("partner_count");
                            final String addr = d.getString("address");
                            Log.d(TAG,"Listt is : " );


                            firebaseFirestore.collection("Send_req").whereEqualTo("post_id",p_id)
                                    .get().addOnCompleteListener(new OnCompleteListener<Querysnapshot>() {
                                @Override
                                public void onComplete(@NonNull Task<Querysnapshot> task) {
                                    if(task.isSuccessful()){
                                        for (Documentsnapshot d1 : task.getResult()){
                                            a = d1.getId();
                                            b = d1.getString("sender_id");
                                            accept_request.add(a);
                                            Log.d(TAG,"List2 is : "+a );
                                        }

                                    }
                                    final AllPosts allPosts = d.toObject(AllPosts.class);
                                    posts_list.add(allPosts);
                                    allPosts.setDate(date);
                                    allPosts.setaddress(addr);
                                    allPosts.setMessage(msg);
                                    allPosts.setPrice(rs);
                                    allPosts.setPartner_count(pc);
                                    allPosts.setSend_req_doc_id(a);
                                    allPosts.setSender_id(b);
                                    userRecyclerAdapter.notifyDataSetChanged();
                                }
                            });
                        }
                    }
                }
            });
    return view;
}}

适配器类:

public class UserRecyclerAdapter extends RecyclerView.Adapter<UserRecyclerAdapter.ViewHolder> {
Context context;
public List<AllPosts> posts_list;
public List<String> accept_request;
private SparseBooleanArray expandState = new SparseBooleanArray();
private FirebaseFirestore firebaseFirestore;
private FirebaseAuth mAuth;
private StorageReference storageReference;
String u_id,s_name,s_gender,s_id;
private AdapterView.OnItemClicklistener listener;
RecyclerView send_req_user_list;
List<String> senderList;
String post_id;

public UserRecyclerAdapter(List<AllPosts> posts_list,List<String> accept_request) {
    this.posts_list = posts_list;
    this.accept_request = accept_request;
    //set initial expanded state to false
    for (int i = 0; i < posts_list.size(); i++) {
        expandState.append(i,false);
    }
}



@Override
public ViewHolder onCreateViewHolder(ViewGroup parent,int viewType) {
    mAuth = FirebaseAuth.getInstance();
    u_id = mAuth.getcurrentUser().getUid();
    firebaseFirestore = FirebaseFirestore.getInstance();
    storageReference = FirebaseStorage.getInstance().getReference();

    View view = LayoutInflater.from(parent.getcontext()).inflate(R.layout.user_list,parent,false);

    context = parent.getcontext();
    UserRecyclerAdapter.ViewHolder vh = new UserRecyclerAdapter.ViewHolder(view);
    return vh;



}

@Override
public void onBindViewHolder(final ViewHolder holder,final int position) {

    holder.setIsRecyclable(false);

    final String msg_data = posts_list.get(position).getMessage();
    holder.setMessageText(posts_list.get(position).getMessage());


    final String count_data = posts_list.get(position).getPartner_count();
    holder.setCountText(count_data);

    final String price = posts_list.get(position).getPrice();
    holder.setrsText(price);

    final String location_data = posts_list.get(position).getaddress();
    holder.setLocationText(location_data);

    /*****To set Date*******/
    String dateTime = posts_list.get(position).getDate();
    Log.d(TAG,"DateTime : "+dateTime);
    //To remove substring
    String dateonly = dateTime.split("Time")[0];
    Log.d(TAG,"DateTime new : "+dateonly);
    //To remove DATE from string
    String dateRemove = dateonly.replace("Date:","");
    Log.d(TAG,"DateRemoved : "+dateRemove);
    //To get last two digits of year
    String year = dateRemove.substring(dateRemove.length()-3);
    Log.d(TAG,"Year  :"+year);
    //To get last two digits of year
    String year2 = dateRemove.substring(0,dateRemove.length()-5);
    Log.d(TAG,"Year2  :"+year2);
    String finalDate = year2+""+year;
    Log.d(TAG,"final  :"+finalDate);
    holder.setDateText(finalDate);

    post_id = posts_list.get(position).getPost_id();
    Log.d(TAG,"post id : "+post_id);

    final String sender_id = posts_list.get(position).getSender_id();
    Log.d(TAG,"sender id : "+sender_id);

    final String sender_name = posts_list.get(position).getSender_name();
    Log.d(TAG,"sender name : "+sender_name);

    final String send_r_d_i = posts_list.get(position).getSend_req_doc_id();
    Log.d(TAG,"sender doc_id : "+send_r_d_i);

    //check if view is expanded
    final boolean isExpanded = expandState.get(position);
   // holder.expandedConst.setVisibility(isExpanded?View.VISIBLE:View.GONE);

    Log.d(TAG,"Bind Complete food :"+accept_request);

    holder.cardView.setTag(position);
    //initializing the productlist



}

@Override
public int getItemCount() {
    return posts_list.size();
}

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClicklistener  {
    private View mView;
    private TextView rupees,date,location_txt,count,gender,name,foodpreferred;
    Button sendRequest;
    CardView cardView;
    ConstraintLayout constraintLayout,expandedConst;
    private AdapterView.OnItemClicklistener listener;

    public ViewHolder( View itemView) {
        super(itemView);
        mView = itemView;
        constraintLayout = mView.findViewById(R.id.u_cont);
        cardView = mView.findViewById(R.id.u_cardd);
        cardView.setOnClicklistener(this);

    }
    public void setrsText(String rs){
        rupees = mView.findViewById(R.id.u_rs);
        rupees.setText(rs);
    }

    public void setDateText(String dt){
        date = mView.findViewById(R.id.utime);
        date.setText(dt);
    }

    public void setLocationText(String locationText){
        location_txt = mView.findViewById(R.id.ulocation_text);
        location_txt.setText(locationText);
    }

    public void setMessageText(String msg){
        message = mView.findViewById(R.id.umsg);
        message.setText(msg);
    }

    public void setCountText(String countText){
        count = mView.findViewById(R.id.ucount);
        count.setText(countText);
    }

    @Override
    public void onClick(final View view) {
        final int position = (int) view.getTag();
        Toast.makeText(view.getcontext(),Integer.toString(position),Toast.LENGTH_SHORT).show();

    }
}}

数据库:

在Android中将子RecyclerView / ListView添加到父RecyclerView项

在Android中将子RecyclerView / ListView添加到父RecyclerView项

liqilong2259 回答:在Android中将子RecyclerView / ListView添加到父RecyclerView项

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3159558.html

大家都在问