简体   繁体   English

如何在FirestoreRecyclerAdapter中实现onClick以打开新的片段?

[英]How to implement onClick in FirestoreRecyclerAdapter to open a new Fragment?

I am trying to implement OnClick in my recyclerview,but i failed miserably with all the searches how to solve this problem. 我正在尝试在自己的recyclerview中实现OnClick,但是所有搜索如何解决此问题都使我惨败。 I want by clicking on my cardview to go to another activity/even better fragment with another expandable lists,but i can't even do this for now. 我想通过单击Cardview转到另一个活动/甚至具有另一个可扩展列表的更好片段,但是我现在甚至无法执行此操作。 Any help is highly appreciated 任何帮助都受到高度赞赏

MainActivity code
package com.oleg.firestoretest;



    public static final String TAG = "FireLog";
    private CollectionReference noteBookRef;
    private FirebaseFirestore mFirestore;
    private NoteAdapter adapter;
    private RecyclerView recyclerView;

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


        mFirestore = FirebaseFirestore.getInstance();
        noteBookRef = mFirestore.collection("Notebook");
        setupRecyclerView();




    }

    private void setupRecyclerView() {
        Query query = noteBookRef.orderBy("priority", Query.Direction.DESCENDING);

        FirestoreRecyclerOptions<Note> options = new FirestoreRecyclerOptions.Builder<Note>()
                .setQuery(query,Note.class)
                .build();

        adapter = new NoteAdapter(options);

        recyclerView = findViewById(R.id.recycler_view);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setAdapter(adapter);

    }


    @Override
    protected void onStart() {
        super.onStart();
        adapter.startListening();
    }

    @Override
    protected void onStop() {
        super.onStop();
        adapter.stopListening();
    }


}


    public Note() {

    }

    public Note(String title, String content, int priority) {
        this.title = title;
        this.content = content;
        this.priority = priority;
    }

    public String getTitle() {
        return title;
    }

    public String getContent() {
        return content;
    }

    public int getPriority() {
        return priority;
    }
}



public class NoteAdapter extends FirestoreRecyclerAdapter<Note, NoteAdapter.NoteHolder> {
    private Context mContext;







    public NoteAdapter(@NonNull FirestoreRecyclerOptions<Note> options) {
        super(options);
    }

    @Override
    protected void onBindViewHolder(@NonNull NoteHolder noteHolder, int i, @NonNull Note note) {
        noteHolder.title.setText(note.getTitle());
        noteHolder.content.setText(note.getContent());
        noteHolder.priority.setText(String.valueOf(note.getPriority()));
    }




    @NonNull
    @Override
    public NoteHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.note_item,
                parent, false);

        return new NoteHolder(v);
    }

    class NoteHolder extends RecyclerView.ViewHolder {
        TextView title;
        TextView content;
        TextView priority;


        public NoteHolder(@NonNull View itemView) {
            super(itemView);
            title = itemView.findViewById(R.id.title_text);
            content = itemView.findViewById(R.id.content_text);
            priority = itemView.findViewById(R.id.priority_text);



                }



    }

    }

Here the Code u need: 这是您需要的代码:

class NoteHolder extends RecyclerView.ViewHolder {
            TextView title;
            TextView content;
            TextView priority;

            CardView cardView;


            public NoteHolder(@NonNull View itemView) {
                super(itemView);
                title = itemView.findViewById(R.id.title_text);
                content = itemView.findViewById(R.id.content_text);
                priority = itemView.findViewById(R.id.priority_text);

                cardView = itemView.findViewById(R.id.cardView);



            }

            private void bind(){

                cardView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        Intent intent = new Intent(FirstActivity.this, SecoundActivity.class);
                        startActivity(intent);
                    }
                });

            }



        }

Fixed it with this code!!! 用此代码修复了它!!!

        public NoteHolder(@NonNull final View itemView) {

        super(itemView);

        cardView = itemView.findViewById(R.id.cardview);
        title = itemView.findViewById(R.id.title_text);
        content = itemView.findViewById(R.id.content_text);
        priority = itemView.findViewById(R.id.priority_text);
        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                itemView.getContext().startActivity(new Intent(itemView.getContext(),Empty.class));
            }
        });


            }

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

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