当回收器视图中没有要显示的内容时,如何显示类似"it's empty here"的内容?



这是我的碎片活动:

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);

}
}

这是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中有一个TextView。给它起个好名字,比如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
}

此外,我建议您在命名类时使用camel大小写。当然,cgpa_frag这个Fragment类的名称会产生代码气味。与其把它命名为CgpaFragment。这更可读,也更有意义。另外,不要创建适配器的另一个实例。相反,在适配器中有一个方法。

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

您的回收器视图适配器将处理您更新的列表。您正在使用新的适配器对象创建额外的开销。它将在每次您想要显示新数据时创建。在你的适配器中有一个方法只会刷新你的列表。并且不会创建新的UI。希望这对你有帮助。快乐编码

相关内容

最新更新