Как отобразить что-то вроде «здесь пусто», когда нечего показывать в окне рециркуляции? - PullRequest
0 голосов
/ 08 марта 2020

Это мой фрагмент активности:

public class cgpa_frag extends Fragment {

    RecyclerView recyclerview;
    adapter_cgpa ac;

    ArrayList<POJO> cgpaArrayList = new ArrayList<>();


    public cgpa_frag() {
        // Required empty public constructor
    }


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

    }

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_cgpa_frag, container, false);
        recyclerview=(RecyclerView) view.findViewById(R.id.rc2);
        cgpaArrayList= new ArrayList<>();
        ac= new adapter_cgpa(cgpaArrayList);
        recyclerview.setLayoutManager(new LinearLayoutManager(getContext(), RecyclerView.VERTICAL,true));
        recyclerview.setAdapter(ac);


        Fetchdata2();
        return view;
    }
    private void Fetchdata2()
    {
        dbmanager db= new dbmanager(getContext());

        Cursor cursor= db.fetch_data2();

        if (cursor!= null) {

            // cursor.moveToFirst();
            while (cursor.moveToNext()) {

                POJO pj = new POJO();
                pj.setCname(cursor.getString(0));
                pj.setNo_of_sems(cursor.getString(1));
                pj.setCgpa(cursor.getString(2));
                pj.setPercentage(cursor.getString(3));
                pj.setSchemec(cursor.getString(4));
                cgpaArrayList.add(pj);
            }

            ac = new adapter_cgpa(cgpaArrayList);


        }

    }

Это фрагмент_cgpa_frag. xml file:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".drawernav.bottom_navi.recycler_view.cgpa_frag">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rc2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingBottom="60dp">

    </androidx.recyclerview.widget.RecyclerView>

</FrameLayout>

Как отобразить что-то вроде "здесь пусто", когда ничего нет показать в представлении переработчика? Я пытался сделать это несколькими способами, но я не получил вывод. Пожалуйста, скажите мне, как я могу это сделать. Любая помощь будет признана и оценена.

1 Ответ

1 голос
/ 08 марта 2020

Имейте один TextView в вашем xml. Присвойте ему хорошее имя, скажем, tv_noContent.

Поместите одно условие в ваш код перед обновлением адаптера.

if(cgpaArrayList.isEmpty()){
   recyclerview.setVisibility(View.Gone);
   tv_noContent.setVisibility(View.Visible)
   tv_noContent.setText("Its empty here");

}else{
  tv_noContent.setVisibility(View.Gone);
  recyclerview.setVisibility(View.Visible);
  //Update your adapter here
}

Также я бы порекомендовал вам использовать верблюжий чехол при именовании вашего класса. Конечно, cgpa_frag это имя для класса Fragment производит запах кода. Скорее назовите это CgpaFragment. Который более читабелен и имеет смысл. Также не создавайте другой экземпляр вашего адаптера. Вместо этого используйте метод в вашем адаптере.

public void updateRecyclerList(ArrayList cgpaArrayList){
    this.cgpaArrayList.clear();
    this.cgpaArrayList.addAll(cgpaArrayList);
    notifyDatasetChange();
}

Ваш адаптер представления переработчика позаботится о вашем обновленном списке. Вы создаете дополнительные издержки с новым объектом адаптера. Он будет создаваться каждый раз, когда вы хотите показать новые данные. Наличие метода в вашем адаптере только обновит ваш список sh. И не будет создавать новый пользовательский интерфейс. Надеюсь, что это поможет вам. Счастливое кодирование

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