0

I've got problem with my "RecyclerView" and "BottomNavigationView" when I've tried to refactor my app and use Dependency Injection. The problem is when i click on items in Navigation View, "RecyclerView" won't change items in list. I have a code status for my HTTP request and base on that request I'm getting items. I've checked API and worked fine, also in "LOGCAT" got 200 Code. here's the code for the parts. when activity open app will show data with 0 status code, then when we change status code with bottom, nothing gonna change and still I'm getting same list.

This is not a duplicate since I'm using dependency injection and MVP, and I've also added dependency injection tag because this is happening when i use dependency injection and i'm beginner.

Activity: I'm calling methods in onCreate for data and View Here's the data.

private void setupData() {
    bottomNavigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            if (item.getItemId() == R.id.new_request) {
                mPresenter.setupLoadOrders("0");
            } else if (item.getItemId() == R.id.canceled_request) {
                mPresenter.setupLoadOrders("-1");
            } else if (item.getItemId() == R.id.submited_request) {
                mPresenter.setupLoadOrders("1");
            } else if (item.getItemId() == R.id.added_request) {
                mPresenter.setupLoadOrders("2");
            }
            return true;
        }
    });

    mPresenter.setupLoadOrders("0");
}

private void setupView() {

    recyclerRequests.setLayoutManager(new LinearLayoutManager(this));
    recyclerRequests.setHasFixedSize(true);
}
@Override

public void displayOrders(List<Requests> requests) {
    requestAdapter.setData(requests);
    recyclerRequests.setAdapter(requestAdapter);
}

And Presenter :

@Override
public void setupLoadOrders(String statusReq) {

        compositeDisposable.add(atlasApiReference.getRequest(Common.currentUser.getPhone(), statusReq)
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribe(new Consumer<List<Requests>>() {
                    @Override
                    public void accept(List<Requests> requests) throws Exception {
                        mView.displayOrders(requests);
                    }
                }, new Consumer<Throwable>() {
                    @Override
                    public void accept(Throwable throwable) throws Exception {
                        Log.e("Log",throwable.getMessage());
                    }
                }));
}

public void unSubscribe()
{
    AtlasRxJavaUtil.unsubscribeClear(compositeDisposable);
}

And Adapter :

private List<Requests> requestsList;

@Inject
public RequestAdapter() {
    requestsList = new ArrayList<>();
}

@NonNull
@Override
public RequestAdapterViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    return new RequestAdapterViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.request_detail_layout, parent, false));

}

@Override
public void onBindViewHolder(@NonNull RequestAdapterViewHolder holder, final int position) {
    holder.request_number.setText(new StringBuilder(" ").append(requestsList.get(position).getId()));
    holder.request_name.setText(new StringBuilder(" ").append(requestsList.get(position).getNameReq()));


}


public class RequestAdapterViewHolder extends RecyclerView.ViewHolder {



    public PsTextView request_number,request_name;
    CardView request_detail_layout;

        public RequestAdapterViewHolder(final View itemView) {
            super(itemView);

            request_number = (PsTextView)itemView.findViewById(R.id.request_number);
            request_name = (PsTextView)itemView.findViewById(R.id.request_name);
            request_detail_layout = (CardView)itemView.findViewById(R.id.request_detail_layout);

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

                    Common.currentRequest = requestsList.get(getAdapterPosition());
                    itemView.getContext().startActivity(new Intent(itemView.getContext(), ShowDetail.class));
                }
            });

        }

}

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


public void setData(List<Requests> requestsList){

        this.requestsList.addAll(requestsList);
        notifyDataSetChanged();

}
Mohammad Eskandari
  • 221
  • 1
  • 5
  • 14

1 Answers1

0

Try removing the following line:

recyclerRequests.setHasFixedSize(true);

More info on this post.

Tiago Ornelas
  • 1,109
  • 8
  • 21