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。
希望这能对您有所帮助。快乐编码我没有正确理解您要说的内容。请您更改我的代码并给我看。之后我会验证您的答案。