OnClick Listener Recyclerview, чтобы открыть различные действия, чтобы открыть файлы PDF - PullRequest
0 голосов
/ 24 апреля 2020

Я хочу установить OnClickListener для представления переработчика, чтобы он мог открывать другое действие. Но каждый элемент должен открывать другое действие

В настоящее время, когда по элементу нажимают, он показывает всплывающее сообщение. Пожалуйста, сообщите Как открыть разные действия при нажатии на элементы? Я прикрепил весь код ->

RecyclerAdapter. java

public class   RecyclerViewAdapter extends 

   RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {

    Context nContext;
    List<Contact> nData;
    private ItemClickListener mClickListener;

    public RecyclerViewAdapter(Context nContext, List<Contact> nData) {
        this.nContext = nContext;
        this.nData = nData;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v;
        v = LayoutInflater.from(nContext).inflate(R.layout.item_contact,parent,false);
        MyViewHolder vHolder = new MyViewHolder(v);


        vHolder.item_contact.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent intent = new Intent(nContext,BOOK.class);      //All the items open same pdf...
                                                                      // I want to open different pdfs after clickeig different items in recyclerview
                nContext.startActivity(intent);
                }
        });
        return vHolder;

    }


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

        holder.tv_name.setText(nData.get(position).getName());
        holder.tv_phone.setText(nData.get(position).getPhone());
        holder.img.setImageResource(nData.get(position).getPhoto());

    }

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

    public static class MyViewHolder extends RecyclerView.ViewHolder {

        private TextView tv_name;
        private TextView tv_phone;
        private ImageView img;
        private LinearLayout item_contact;
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            item_contact = (LinearLayout) itemView.findViewById(R.id.contact_item_id);
            tv_name = (TextView) itemView.findViewById(R.id.name_contact);
            tv_phone = (TextView) itemView.findViewById(R.id.phone_contact);
            img= (ImageView) itemView.findViewById(R.id.img_contact);

        }
    }

}

Фрагмент. java ->

public class FragmentContact extends Fragment {
    View v;
    private RecyclerView myrecyclerview;
    private DatabaseReference mDatabase;
    MyAdapter2 myadapter;
    private List<Contact> lstContact;

    public FragmentContact() {
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        v = inflater.inflate(R.layout.contact_fragment, container, false);
        myrecyclerview = (RecyclerView) v.findViewById(R.id.contact_recyclerview);
        RecyclerViewAdapter recyclerAdapter = new RecyclerViewAdapter(getContext(), lstContact);
        myrecyclerview.setLayoutManager(new LinearLayoutManager(getActivity()));
        myrecyclerview.setAdapter(recyclerAdapter);
        return v;
    }


    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        lstContact = new ArrayList<>();
        lstContact.add(new Contact("Aron Jones", "(111) 251236211", R.drawable.team));
        lstContact.add(new Contact("Amy 1", "(216) 2221254", R.drawable.team));
        lstContact.add(new Contact("Amy 2", "(216) 2221254", R.drawable.team));
        lstContact.add(new Contact("Amy 3", "(216) 2221254", R.drawable.team));
        lstContact.add(new Contact("Amy 4", "(216) 2221254", R.drawable.team));
        lstContact.add(new Contact("Amy 5", "(216) 2221254", R.drawable.team));
        lstContact.add(new Contact("Aron Jones", "(111) 251236211", R.drawable.team));
        //lstContact.add(new Contact ("Amy","(216) 2221254",R.drawable.team));
        //lstContact.add(new Contact ("Amy","(216) 2221254",R.drawable.team));
        //lstContact.add(new Contact ("Amy","(216) 2221254",R.drawable.team));
        //lstContact.add(new Contact ("Amy","(216) 2221254",R.drawable.team));
        // lstContact.add(new Contact ("Amy","(216) 2221254",R.drawable.team));

    }
}

Скажите, пожалуйста, как открывать различные действия при нажатии на элементы

Ответы [ 2 ]

0 голосов
/ 25 апреля 2020

Сначала удалите clicklistener из onCreateViewHolder

Допустим, у вас есть 7 items в списке, сделайте это в onBindViewHolder

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

holder.tv_name.setText(nData.get(position).getName());
holder.tv_phone.setText(nData.get(position).getPhone());
holder.img.setImageResource(nData.get(position).getPhoto());


//handle item click here
holder.item_contact.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {


if(position == 0){
//first item clicked
Intent intent = new Intent(nContext,BOOK.class);     
nContext.startActivity(intent);

}else if(position == 1){
//second item clicked
Intent intent = new Intent(nContext,AnotherActivity.class);     
nContext.startActivity(intent);

}else if(position == 2){
//third item clicked
Intent intent = new Intent(nContext,AnotherActivity.class);     
nContext.startActivity(intent);

}else if(position == 3){

//fourth item clicked
Intent intent = new Intent(nContext,AnotherActivity.class);     
nContext.startActivity(intent);

}else if(position == 4){

//fifth item clicked
Intent intent = new Intent(nContext,AnotherActivity.class);     
nContext.startActivity(intent);

}else if(position == 5){

//sixth item clicked
Intent intent = new Intent(nContext,AnotherActivity.class);     
nContext.startActivity(intent);

}else if(position == 6){

//seventh item clicked
Intent intent = new Intent(nContext,AnotherActivity.class);     
nContext.startActivity(intent);

}

}
});

}
0 голосов
/ 24 апреля 2020

Пожалуйста, установите ваш слушатель в onBindViewHolder и в нем, основываясь на позиции или модели этой позиции, вы можете установить активность

...