Как добавить OnClickListener и анимацию в RecyclerView? - PullRequest
0 голосов
/ 16 февраля 2020

Хорошо, у меня есть RecyclerView, в котором я получаю некоторые данные из базы данных Firebase в реальном времени, и у меня есть SearchView, который фильтрует мою базу данных. Теперь я хочу две вещи

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

  2. Я хочу применять анимацию к своему RecyclerView при каждой прокрутке вниз.

Примечание: OnClickListener также должен работать после фильтрации данных.

Пока я не могу достичь этого. Вот мой код

Adapter Class -> AdapterClass.java

public class AdapterClass extends RecyclerView.Adapter<AdapterClass.MyViewHolder>{
    ArrayList<Deal> list;

    public AdapterClass(ArrayList<Deal> list)
    {
        this.list = list;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.card_holder,viewGroup,false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, final int i) {
        myViewHolder.id.setText(list.get(i).getDealId());
        myViewHolder.desc.setText(list.get(i).getDealDisc());

    }

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

    static class MyViewHolder extends RecyclerView.ViewHolder{


        TextView id,desc;
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            id= itemView.findViewById(R.id.dealId);
            desc=itemView.findViewById(R.id.description);
        }
    }
}
Model Class -> Deal.java

public class Deal {
    private String dealDisc;
    private String dealId;
    private String dealImage;
    private String price;

    public Deal() {
    }

    public Deal(String dealDisc, String dealId, String dealImage, String price) {
        this.dealDisc = dealDisc;
        this.dealId = dealId;
        this.dealImage = dealImage;
        this.price = price;
    }

    public String getDealDisc() {
        return dealDisc;
    }

    public void setDealDisc(String dealDisc) {
        this.dealDisc = dealDisc;
    }

    public String getDealId() {
        return dealId;
    }

    public void setDealId(String dealId) {
        this.dealId = dealId;
    }

    public String getDealImage() {
        return dealImage;
    }

    public void setDealImage(String dealImage) {
        this.dealImage = dealImage;
    }

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }
}
Main Activity -> MainActivity.java

public class MainActivity extends AppCompatActivity {

    DatabaseReference ref;
    ArrayList<Deal> list;
    RecyclerView recyclerView;
    SearchView searchView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ref= FirebaseDatabase.getInstance().getReference().child("rana");
        recyclerView = findViewById(R.id.rv);
        searchView=findViewById(R.id.searchView);


    }


    @Override
    protected void onStart() {
        super.onStart();
        if (ref != null)
        {
            ref.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    if (dataSnapshot.exists())
                    {
                        list = new ArrayList<>();
                        for (DataSnapshot ds : dataSnapshot.getChildren())
                        {
                            list.add(ds.getValue(Deal.class));

                        }
                        AdapterClass adapterClass = new AdapterClass(list);
                        recyclerView.setAdapter(adapterClass);


                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                    Toast.makeText(MainActivity.this, databaseError.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });





            if (searchView != null)
            {
                searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                    @Override
                    public boolean onQueryTextSubmit(String s) {
                        return false;
                    }

                    @Override
                    public boolean onQueryTextChange(String s) {
                        search(s);
                        return true;
                    }
                });
            }
        }
    }

    private void search(String str) {
        ArrayList<Deal> myList = new ArrayList<>();
        for (Deal object : list)
        {
            if (object.getDealDisc().toLowerCase().contains(str.toLowerCase()) || object.getDealId().toLowerCase().contains(str.toLowerCase()))
            {
                myList.add(object);
            }
        }

        AdapterClass adapterClass = new AdapterClass(myList);
        recyclerView.setAdapter(adapterClass);
    }
}

1 Ответ

0 голосов
/ 16 февраля 2020

myViewHolder.id.setonclickListener ()

...