setItemOnclickListener не работает в FirebaseRecyclerAdapter - PullRequest
0 голосов
/ 24 мая 2018

Я новичок в FirebASE и застрял на setItemclickListener , вот некоторые показанные фрагменты, пожалуйста, помогите мне.В основном используется в FirebaseRecycler, где setItemClickListener является интерфейсом и используется для Onclick в Firebaserecy

Leavereqests.java

  @Override
//LeaveReqests.java 
    leavereq= database.getReference("LeafForm");
    recyclerview = (RecyclerView)findViewById(R.id.recycler_hod);
    recyclerview.setHasFixedSize(true);
    LinearLayoutManager manager = new LinearLayoutManager(this);
    recyclerview.setLayoutManager(manager);
    loadhod();
}
private void loadhod() {
  adapter = new FirebaseRecyclerAdapter<LeaveReq, HodViewHolder>(LeaveReq.class,R.layout.hod_login_list
          ,HodViewHolder.class,leavereq) {
        @Override
        protected void populateViewHolder(HodViewHolder viewHolder, LeaveReq model, int position) {
             viewHolder.name.setText(model.getName());

            clickitem = model;
            viewHolder.setItemClickListener(new ItemClickListener() { //the non working part 
                @Override
                public void onClick(View view, int position) {
                    Intent hodlist = new Intent(LeaveRequests.this,HodReqList.class);
                    hodlist.putExtra("hodid",adapter.getRef(position).getKey());
                    startActivity(hodlist);
                }
            });
        }
    };
    recyclerview.setAdapter(adapter);}}

HodViewholder.java

public class HodViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public Button name;
private ItemClickListener itemClickListener;

public HodViewHolder(View itemView) {
    super(itemView);
    name=(Button)itemView.findViewById(R.id.name_of_faculty);
    itemView.setOnClickListener(this);
}

public void setItemClickListener(ItemClickListener itemClickListener) {
    this.itemClickListener = itemClickListener;
}

@Override
public void onClick(View view) {
    itemClickListener.onClick(view,getAdapterPosition(),false);

}}

LeaveReq.java - это класс, у которого есть получатель имени.

public class LeaveReq {
private String name;

public LeaveReq() {
}

public LeaveReq(String name) {

    this.name = name;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}
}

Элемент Click Интерфейс прослушивателя

public interface ItemClickListener {
void onClick(View view, int position);
}

список заполняется, но действие щелчка не работает

Ответы [ 2 ]

0 голосов
/ 24 мая 2018
 @Override
    protected void onStart() {

        super.onStart();
        FirebaseRecyclerAdapter<adapter, PandaViewHolder> MyAdapter = new FirebaseRecyclerAdapter <adapter, PandaViewHolder>(
                adapter.class,
                R.layout.replay_panda,
                HodViewHolder.class,
                mDatabase


        ) {
            @Override
            protected void populateViewHolder(final PandaViewHolder viewHolder, adapter model, int position) {

                final String position_key = getRef( position ).getKey().toString();

                viewHolder.setTitle(model.getTitle());


              //// Here
               //#################################

               viewHolder.mView.setOnClik{....}

              //#################################


            }
        };
        RecyclerView.setAdapter( MyAdapter );
    }


    public static class HodViewHolder  extends RecyclerView.ViewHolder {


        View mView;
        DatabaseReference mDatabase1231223;
        FirebaseAuth mAuth;


        public PandaViewHolder(View itemView) {

            super(itemView);
            mView = itemView;

        }

        // post text view
        public void setTitle(String title) {



        }
0 голосов
/ 24 мая 2018

Попробуйте что-то подобное

Такие функции, как кнопки RecycleView , должны быть помещены в класс HodViewHolder, чтобы RecycleView мог идентифицировать инструменты, по которым щелкалипо кнопке

  //public static class ViewHolder extends RecyclerView.ViewHolder {..
    View mView;

    //public ViewHolder(View itemView) {...
    super(itemView);
    mView = itemView;




     viewHolder.mView .setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {....}

надеюсь вам помочь ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...