Как обновить sh recyclerview адаптер из другого recyclerview адаптера в том же фрагменте - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть категория Recyclerview и продукт Recyclerview в одном фрагменте (работа с ящиками). когда я нажимаю что-то в категории, я хочу перезагрузить / обновить sh recyclerview продукт. enter image description here

Категория повторного просмотра

...
     @Override
    public transaksibaru_kategori_viewholder onCreateViewHolder(final ViewGroup parent, int viewType) {
        View view;
        view = LayoutInflater.from(parent.getContext()).inflate(R.layout.rv_item_transaksibaru_kategori, parent, false);
        final transaksibaru_kategori_viewholder vHolder = new transaksibaru_kategori_viewholder(view);
        sharedPrefManager = new SharedPrefManager(parent.getContext());
        Activity_transaksibaru.KEY_ACT = "run";
        vHolder.linearlayout_kategori.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final String id_kategori = mItem_kategori.get(vHolder.getAdapterPosition()).getId();
                sharedPrefManager.savetransaksibarustring(SharedPrefManager.sp_idkategori,id_kategori);
                Toast.makeText(parent.getContext(), "ID KATEGORI = " + id_kategori,Toast.LENGTH_LONG).show();

            }
        });
        return vHolder;
    }
...

Фрагмент

@Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
...

        statusview = sharedPrefManager.getSp_viewmode();
        statushitung = Integer.valueOf(statusview);
        id_kategori = sharedPrefManager.getSp_idkategori();
        //id_kategori = "10";
        if (statushitung%2 == 0){
            call_itembarang_gridview();
            i=1;
        }else {
            call_itembarang();
            i=2;
        }
...

Мне просто нужно запустить call_itembarang () из RV_category (RV2) it должно быть просто, но я не знаю, как это сделать

Ответы [ 2 ]

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

Так что это тот случай, когда адаптер должен связываться с фрагментом.

мы будем использовать интерфейс для этого:

1) создайте интерфейс в новом файле

public interface onCategoryClickedListener{

void onCategoryClicked(String categoryId);

}

2) адаптер

public class YourAdapter extends ......{

private onCategoryClickedListener listener;


//method to set listener
public void setOnCategoryClickedListener(onCategoryClickedListener listener){
this.listener=listener;
}

//oncreateviewholder

@Override
public transaksibaru_kategori_viewholder onCreateViewHolder(final ViewGroup parent, int viewType) {

......

vHolder.linearlayout_kategori.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

//your category id
final String id_kategori = mItem_kategori.get(vHolder.getAdapterPosition()).getId();

//send the category id back to your fragment
listner.onCategoryClicked(id_kategori);

            }
        });


}

3) теперь позволяет вашему фрагменту реализовать этот интерфейс

public class YourFragment extends Fragment implements onCategoryClickedListener{

private RecyclerView mRecyclerView;
private YourAdapter adapter;
.....
.....
.....

@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

.......

//here you pass the listener to your adapter

adapter.setOnCategoryClickedListener(this);

........
return(view);
}

@Override
public void onCategoryClicked(String categoryId){

//this will be called every time an item in your category is clicked

//call the method from here and whatever if statements you want

}

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

Простое решение вашей проблемы:

  1. Сохраните оба адаптера (productsAdapter и categoryAdapter) в SharedPrefManager.
  2. Добавьте метод loadCategory (int categoryId) в SharedPrefManager.

    public void loadCategory(int categoryId) {
        // you need to create getProductsOfCategory method in SharedPrefManager.
        List<Product> products = getProductsOfCategory(categoryId);
        // you need to create setProductList method in productsAdapter
        productsAdapter.setProductList(products);
        productsAdapter.notifyDatasetChanged();
    }
    
  3. В RecyclerView категорий, в методе onCreateViewHolder измените ваш onClickListener так, чтобы он использовал Метод loadCategory.

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