Моя главная страница: я хочу отсортировать представление ресайклера при нажатии на кнопку сортировки
Ожидается, что это произойдет (при нажатии кнопки сортировки: case1: если ресайклер не отсортирован ...... . тогда он должен быть отсортирован в порядке сборки case2: если ресайклер не отсортирован в порядке сборки ....... тогда он должен быть отсортирован в порядке убывания case1: если ресайклер не отсортирован в порядке убывания ...... . затем он должен быть отсортирован в порядке сборки)
package edmt.dev.androidgridlayout;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Toast;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import edmt.dev.androidgridlayout.HelperClasses.HomeAdapter.CategoryAdapter;
import edmt.dev.androidgridlayout.HelperClasses.HomeAdapter.FeaturedAdapter;
import edmt.dev.androidgridlayout.HelperClasses.HomeAdapter.FeaturedHelperClass;
import edmt.dev.androidgridlayout.HelperClasses.HomeAdapter.ProductAdapter;
public class AllProductPage extends AppCompatActivity {
RecyclerView productrecycler;
ProductAdapter productAdapter;
LinearLayout sortbtn,filterbtn;
private String[] mArrayNames=new String[]{"Pizza","Burger","Wraps","Sandwich","Chicken combos","Veg combos","Majitos","Breveges"};
ArrayList<FeaturedHelperClass> products;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_all_product_page);
productrecycler = findViewById(R.id.product_recycler);
sortbtn = findViewById(R.id.sort_btn);
filterbtn = findViewById(R.id.filter_btn);
productrecycler();
sortbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sortArray();
// sortArrayList();
}
});
}
private void sortArray() {
Collections.sort(products);
productAdapter.notifyDataSetChanged();
}
private void sortArrayList() {
Collections.sort(products, new Comparator<FeaturedHelperClass>() {
@Override
public int compare(FeaturedHelperClass o1, FeaturedHelperClass o2) {
return o1.getTitle().compareTo(o2.getTitle());
}
});
productAdapter.notifyDataSetChanged();
}
private void productrecycler() {
productrecycler.setHasFixedSize(true);
productrecycler.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
products = new ArrayList<>();
products.add(new FeaturedHelperClass(R.drawable.yarnbg2, "Pizza", "sdffsb",400));
products.add(new FeaturedHelperClass(R.drawable.yarnbg2, "Burger", "sdffsb",600));
products.add(new FeaturedHelperClass(R.drawable.yarnbg2, "Wraps", "sdffsbsfavs sdvv sbdfb ",550));
products.add(new FeaturedHelperClass(R.drawable.yarnbg2, "Sandwich", "sdffsbsfavs sdvv sbdfb ",300));
products.add(new FeaturedHelperClass(R.drawable.yarnbg2, "Chicken combos", "sdffsbsfavs sdvv sbdfb ",900));
products.add(new FeaturedHelperClass(R.drawable.yarnbg2, "Veg combos", "sdffsbsfavs sdvv sbdfb ",100));
products.add(new FeaturedHelperClass(R.drawable.yarnbg2, "Majitos", "sdffsbsfavs sdvv sbdfb ",250));
products.add(new FeaturedHelperClass(R.drawable.yarnbg2, "Breveges", "sdffsbsfavs sdvv sbdfb ",600));
productAdapter = new ProductAdapter(products);
productrecycler.setAdapter(productAdapter);
productAdapter.setOnItemClickedListner(new ProductAdapter.onItemClickListner() {
@Override
public void onItemClicked(int position) {
Toast.makeText(getApplicationContext(), "ProductAdapter" + position, Toast.LENGTH_LONG).show();
}
@Override
public void onHeartClicked(int position ,String state) {
Toast.makeText(getApplicationContext(), "onHeartClicked" + position+" "+state, Toast.LENGTH_LONG).show();
}
});
}
}
Мой класс помощника: здесь я реализовал интерфейс Comparable и сравнил цену продукта, чтобы отсортировать их в порядке сборки.
Но Я не могу отсортировать цену в порядке убывания
Как мне этого добиться?
package edmt.dev.androidgridlayout.HelperClasses.HomeAdapter;
public class FeaturedHelperClass implements Comparable<FeaturedHelperClass>{
int image;
String title;
String Description;
int price;
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public FeaturedHelperClass(int image, String title, String description) {
this.image = image;
this.title = title;
this.Description = description;
}
public FeaturedHelperClass(int image, String title, String description,int price) {
this.image = image;
this.title = title;
this.Description = description;
this.price = price;
}
public FeaturedHelperClass(int image, String title) {
this.image = image;
this.title = title;
}
public void setImage(int image) {
this.image = image;
}
public void setTitle(String title) {
this.title = title;
}
public void setDescription(String description) {
Description = description;
}
public int getImage() {
return image;
}
public String getTitle() {
return title;
}
public String getDescription() {
return Description;
}
@Override
public int compareTo(FeaturedHelperClass o) {
return this.price -o.getPrice();
}
}