繁体   English   中英

有没有办法只显示与 Spinner 的一项有关的文档而不是其他人一起堆积的文档?

[英]Is there any way to show only Docs pertaining to one item of Spinner not others pilling up one together?

我有 Spinner 有学生类名(ist-8th)。 当我 select 一个 class 时,在recyclerview中显示与该项目相关的多个文档 但是当我 select 另一个 class 时,文档被堆积在前一个之下。 我只希望那些文档保留在 recyclerview 上,它们具有相同的 Spinner 类名。

ClassViewActivity 的代码是..

public class ViewClasswise extends AppCompatActivity {
    private static final String TAG = ViewClasswise.class.getSimpleName();
    private RecyclerView recyclerViewCW;
    ArrayList<ModelViewClasswise>classlist;
    FirebaseFirestore db;
    FirebaseAuth fAuth;
    ClasswiseAdapter classwiseAdapter;
    Spinner s1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_classwise);

        recyclerViewCW = findViewById(R.id.recyclerviewCW);
        recyclerViewCW.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));

        recyclerViewCW.setLayoutManager(new LinearLayoutManager(this));
        classlist=new ArrayList<>();
        classwiseAdapter=new ClasswiseAdapter(classlist);
        recyclerViewCW.setAdapter(classwiseAdapter);
        s1=findViewById(R.id.spinnerSearch);

        db= FirebaseFirestore.getInstance();
        fAuth= FirebaseAuth.getInstance();
        FirebaseUser user = fAuth.getCurrentUser();

        //spinner Listener
        s1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parentView, View view, int position, long id) {
                String selectedClass = (String) parentView.getItemAtPosition(position);

                db.collection("Schools").document(user.getUid()).collection("Students")
                        .whereEqualTo("className",selectedClass)
                        .get()
                        .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                            @Override
                            public void onSuccess(QuerySnapshot queryDocumentSnapshots) {

                                List<DocumentSnapshot> list=queryDocumentSnapshots.getDocuments();

                                for(DocumentSnapshot d:list){

                                    ModelViewClasswise obj=d.toObject(ModelViewClasswise.class);
                                    classlist.add(obj);
                                }
                                //Update Adapter
                                classwiseAdapter.notifyDataSetChanged();
                            }
                        });


            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

    }


}

适配器代码是....

public class ClasswiseAdapter extends RecyclerView.Adapter<ClasswiseAdapter.studentViewHolder>{
    private static final String TAG =ClasswiseAdapter.class.getSimpleName() ;
    private ArrayList<ModelViewClasswise> classlist;
    private ArrayList<ModelViewClasswise> newClassList;



    public ClasswiseAdapter(ArrayList<ModelViewClasswise> classlist) {

        this.classlist = classlist;



    }
    public void addnewList(ArrayList<ModelViewClasswise> newClassList){
        this.classlist = newClassList;
        notifyDataSetChanged();
    }

    @NonNull
    @Override
    public ClasswiseAdapter.studentViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.row_classwise,parent,false);
        return new ClasswiseAdapter.studentViewHolder(view);


    }

    @Override
    public void onBindViewHolder(@NonNull studentViewHolder holder, int position) {

        holder.t1.setText(classlist.get(position).getName());
        holder.t2.setText(classlist.get(position).getClassName());
        holder.t3.setText(classlist.get(position).getRollNumber());


    }







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

    }





    class studentViewHolder extends RecyclerView.ViewHolder{
        TextView t1,t2,t3;

        public studentViewHolder(@NonNull View itemView) {
            super(itemView);
            t1=itemView.findViewById(R.id.nameC);
            t2=itemView.findViewById(R.id.classC);
            t3=itemView.findViewById(R.id.rollNumC);

        }

    }

}

谢谢大家! 我添加了

classlist.clear()

它奏效了

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM