Android 如何显示类似“的内容”;它';“这里是空的”;当在“回收者”视图中没有显示内容时?

Android 如何显示类似“的内容”;它';“这里是空的”;当在“回收者”视图中没有显示内容时?,android,android-recyclerview,Android,Android Recyclerview,这是我的片段活动: public class cgpa_frag extends Fragment { RecyclerView recyclerview; adapter_cgpa ac; ArrayList<POJO> cgpaArrayList = new ArrayList<>(); public cgpa_frag() { // Required empty public constructor }

这是我的片段活动:

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\u frag扩展片段{
回收视图回收视图;
适配器\u cgpa ac;
ArrayList cgpaArrayList=新的ArrayList();
公共cgpa_frag(){
//必需的空公共构造函数
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.fragment\u cgpa\u frag,container,false);
recyclerview=(recyclerview)view.findViewById(R.id.rc2);
cgpaaraylist=新的ArrayList();
ac=新适配器\u cgpa(cgpaArrayList);
setLayoutManager(新的LinearLayoutManager(getContext(),recyclerview.VERTICAL,true));
recyclerview.setAdapter(ac);
Fetchdata2();
返回视图;
}
私有void Fetchdata2()
{
dbmanager db=newdbmanager(getContext());
Cursor Cursor=db.fetch_data2();
如果(光标!=null){
//cursor.moveToFirst();
while(cursor.moveToNext()){
POJO pj=新的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));
cgparraylist.add(pj);
}
ac=新适配器\u cgpa(cgpaArrayList);
}
}
这是fragment_cgpa_frag.xml文件:

<?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>


如何在“回收器”视图中没有显示内容的情况下显示“此处为空”之类的内容?我尝试了几种方法,但没有得到输出。请告诉我如何显示。任何帮助都将得到确认和感谢。

在xml中有一个文本视图。给它起个好名字,比如说tv\u 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
}
public void updateRecyclerList(ArrayList cgpaArrayList){
    this.cgpaArrayList.clear();
    this.cgpaArrayList.addAll(cgpaArrayList);
    notifyDatasetChange();
}
我还建议您在命名类时使用camel case。 当然,cgpa_frag这个Fragment类的名称会产生代码味道。不如把它命名为cgpa Fragment。这样更可读,也更有意义。 另外,不要创建适配器的另一个实例,而是在适配器中创建一个方法

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
}
public void updateRecyclerList(ArrayList cgpaArrayList){
    this.cgpaArrayList.clear();
    this.cgpaArrayList.addAll(cgpaArrayList);
    notifyDatasetChange();
}
您的recycler视图适配器将负责更新的列表。您正在使用新适配器对象创建额外的开销。每次您希望显示新数据时都会创建该对象。在适配器中使用方法将只刷新列表,而不会创建新的UI。
希望这能对您有所帮助。快乐编码

我没有正确理解您要说的内容。请您更改我的代码并给我看。之后我会验证您的答案。