Заголовок раздела Recyclerview не отображается при обновлении списка с отфильтрованным результатом

#android #android-recyclerview

#Android #android-recyclerview

Вопрос:

Когда я обновляю список recyclerview во фрагменте, заголовок раздела не отображается. Что мне делать? Я проверил адаптер recyclerview, он работает нормально, проблема может быть во фрагменте.Возможно, фрагмент не знает, куда поместить представление при обновлении фрагмента.

Может ли кто-нибудь, пожалуйста, помочь мне с этим

Вот мой фрагмент кода

 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
    setRetainInstance(true);

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    mRootView = inflater.inflate(R.layout.fragment_leads, container, false);
    ButterKnife.bind(this, mRootView);
    GlowShipApplication.getAppComponent().inject(this);
    mLeadListPresenter.setView(this);
    mSysPrefs = SystemAppPreferences.getInstance(getActivity());
    mProgressBarHandler = new ProgressBarHandler(getActivity());


    if (getArguments() != null) {
        mData = getArguments().getString("fragmentName");

    }


    return mRootView;
}


@Override
public void onResume() {
    super.onResume();
    String token = mSysPrefs.getToken();

    if (ConnectionInfo.isConnectingToInternet(getActivity())) {
        // api call


        mLeadListPresenter.fetchLeadList(token);



        mAdapter.notifyDataSetChanged();
        // mProgressBarHandler.show();
        rvLeads.setVisibility(View.GONE);




    } else {
        Toast.makeText(getActivity(), getResources()
                        .getString(R.string.no_internet_connection),
                Toast.LENGTH_SHORT).show();
    }
}


@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    initComponent();


}




private void initComponent() {


    rvLeads.setLayoutManager(new LinearLayoutManager(getActivity()));
    rvLeads.setHasFixedSize(true);
    mLeadList = new ArrayList<>();
    //set data and list adapter
    mAdapter = new AdapterLeads(getActivity(), mLeadList);
    rvLeads.setAdapter(mAdapter);
    mAdapter.notifyDataSetChanged();
    mAdapter.setOnItemClickListener(new AdapterLeads.OnItemClickListener() {

        @Override
        public void onItemClick(View view, Data obj, int position) {
            mProgressBarHandler.hide();
            // need to move site survey detail
            if (position > -1) {
                Intent intent = new Intent(getActivity(), SiteSurveyStatusActivity.class);
                intent.putExtra("homeOwnerID", mAdapter.getList().get(position)
                        .getData().getHomeownerId());
                intent.putExtra("dealer_status_code",mAdapter.getList().get(position)
                        .getData().getDealerStatusCode());
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);

            }



        }
    });



}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    getActivity().getMenuInflater().inflate(R.menu.search_view_menu, menu);

    MenuItem item = menu.findItem(R.id.action_search);
    SearchView searchView = (SearchView) item.getActionView();
    searchView.setOnQueryTextListener(this);

    searchView.setOnCloseListener(new SearchView.OnCloseListener() {
        @Override
        public boolean onClose() {
            startActivity(getActivity().getIntent());

            return false;
        }
    });

}





@OnClick(R.id.fab)
public void createLead(View view) {
    Intent intent = new Intent(getActivity(), LeadActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
}

@Override
public void onSuccessFetchLeadList(LeadList leadList) {
    mProgressBarHandler.hide();

    if (leadList != null) {
        rvLeads.setVisibility(View.VISIBLE);
        noRecordFoundImage.setVisibility(View.INVISIBLE);
        mLeadList.clear();


        if (mData != null) {


            if (mData.contains("proposals")) {

                View view = rvLeads.getChildAt(0);
                Log.d(TAG, "onSuccessFetchLeadList: "   view);
                ArrayList<Datum> filterdNames = new ArrayList<>();

                //looping through existing elements
                for (Datum s : leadList.getData()) {
                    //if the existing elements contains the search input
                    if (!s.getIstitle())
                        if (s.getData().getStatusId().contains("P3") ||
                                s.getData().getStatusId().contains("P4") ||
                                s.getData().getStatusId().contains("P5") ||
                                s.getData().getStatusId().contains("P6") ||
                                s.getData().getStatusId().contains("P7") ||
                                s.getData().getStatusId().contains("P8")) {
                            //adding the element to filtered list
                            filterdNames.add(s);
                            mLeadList.addAll(filterdNames);
                            Set<Datum> setList = new LinkedHashSet<>(mLeadList);
                            mLeadList.clear();
                            mLeadList.addAll(setList);
                        }


                }

            } else if (mData.contains("installations")) {
                //to be continued latter
                ArrayList<Datum> filterdNames = new ArrayList<>();

                //looping through existing elements
                for (Datum s : leadList.getData()) {
                    //if the existing elements contains the search input
                    if (!s.getIstitle())
                        if (s.getData().getStatusId().contains("S11")) {
                            //adding the element to filtered list
                            filterdNames.add(s);
                            mLeadList.addAll(filterdNames);
                            Set<Datum> setList = new LinkedHashSet<>(mLeadList);
                            mLeadList.clear();
                            mLeadList.addAll(setList);


                        } else {
                            noRecordFoundImage.setVisibility(View.VISIBLE);
                        }
                }
            } else if (mData.contains("leads")) {
                mLeadList.addAll(leadList.getData());
            }


        } else {
            mLeadList.addAll(leadList.getData());
        }
        mAdapter.notifyDataSetChanged();
    }


}


@Override
public void onError(LeadList leadList) {

    mProgressBarHandler.hide();
}


@Override
public boolean onQueryTextSubmit(String query) {
    return false;
}

@Override
public boolean onQueryTextChange(String newText) {
    List<Datum> filter = filter(mLeadList, newText);
    mAdapter.filteredList(filter);
    return false;
}


//Helper method to filter out the leads list
private List<Datum> filter(List<Datum> mLeadList, String newText) {
    //new array list that will hold the filtered data
    ArrayList<Datum> filterdNames = new ArrayList<>();

    //looping through existing elements
    for (Datum s : mLeadList) {
        //if the existing elements contains the search input
        if (!s.getIstitle())
            if (s.getData().getName().contains(newText)) {
                //adding the element to filtered list
                filterdNames.add(s);
            }
    }

    //calling a method of the adapter class and passing the filtered list
    mAdapter.filteredList(filterdNames);
    return filterdNames;
}
  

Вот мой XML-файл:

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="in.thelattice.glowship.dealer.leadslist.LeadsFragment">

<android.support.v7.widget.RecyclerView
    android:id="@ id/rv_leadlist"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scrollbars="vertical"
    android:scrollingCache="false" />


<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:src="@drawable/nodata"
    android:id="@ id/noRecordFoundIv"
    />

<android.support.design.widget.FloatingActionButton
    android:id="@ id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="@dimen/fab_margin"
    android:backgroundTint="@color/appYellowColor"
    app:borderWidth="0dp"
    app:srcCompat="@drawable/ic_add_black_24dp" />
  

Комментарии:

1. Пожалуйста, добавьте только соответствующий код, также, вы можете добавить свой XML-макет?

2. это соответствующий код. да, я буду