如果 recyclerview 为空,我尝试显示 textview。我从数据库获取数据并显示在 recyclerview 中。但有时我的数据库中没有数据,所以如果没有数据我想显示 TextView 。 很长一段时间,我尝试了大部分答案,我发现它发布在这里,但都不适用于我。我不知道问题是什么。 如果有人知道解决方案请帮助我。
public class ViewCom extends Fragment {
private TextView emptyView;
private List<List_Data> list_data;
private RecyclerView rvcy;
private MyAdapter adapter;
CardView cardView;
private static final String TAG = "ViewCom";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
setHasOptionsMenu(true);
View rootView = inflater.inflate(R.layout.fragment_comment, container, false);
cardView=(CardView)rootView.findViewById(R.id.cardView);
emptyView = (TextView) rootView.findViewById(R.id.empty_view);
Intent i = getActivity().getIntent();
final String mid = i.getStringExtra("mid");
rvcy=(RecyclerView)rootView.findViewById(R.id.recyclerview);
rvcy.setHasFixedSize(true);
rvcy.setLayoutManager(new LinearLayoutManager(getActivity().getApplicationContext()));
list_data=new ArrayList<>();
adapter=new MyAdapter(list_data);
getComment(mid);
rvcy.setAdapter(adapter);
return rootView;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
private void getComment(String mid){
final String HI ="http://===========/Sh.php?mid=" + mid ;
StringRequest stringRequest=new StringRequest(Request.Method.GET, HI, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject=new JSONObject(response);
JSONArray array=jsonObject.getJSONArray("data");
for (int i=0; i<array.length(); i++ ) {
JSONObject ob = array.getJSONObject(i);
List_Data listData = new List_Data(ob.getString("comment")
, ob.getString("name"));
list_data.add(listData);
adapter.notifyDataSetChanged();
Log.i(TAG, "test2"+array.toString());
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
RequestQueue requestQueue = Volley.newRequestQueue(getActivity().getApplicationContext());
requestQueue.add(stringRequest);
}
}
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{
private List<List_Data>list_data;
public MyAdapter(List<List_Data> list_data) {
this.list_data = list_data;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.list_data,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
List_Data listData=list_data.get(position);
holder.txtname.setText(listData.gettext());
holder.txtm.setText(listData.getmid());
}
@Override
public int getItemCount() {
return list_data.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
private TextView txtname,txtm,ImageView;
public ViewHolder(View itemView) {
super(itemView);
txtname=(TextView)itemView.findViewById(R.id.txt_name);
txtm=(TextView)itemView.findViewById(R.id.txt_mname);
}
}
}
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.cardview.widget.CardView
android:id="@+id/cardView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_gravity="center"
android:layout_marginStart="20dp"
android:layout_marginLeft="20dp"
android:layout_marginEnd="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="20dp"
android:elevation="5dp"
app:cardCornerRadius="@dimen/loginCardRadiuss">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/empty_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="no_data_available"
android:visibility="gone" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent">
</androidx.recyclerview.widget.RecyclerView>
</LinearLayout>
</androidx.cardview.widget.CardView>
最佳答案
试试这个
for (int i=0; i<array.length(); i++ ) {
JSONObject ob = array.getJSONObject(i);
List_Data listData = new List_Data(ob.getString("comment")
, ob.getString("name"));
list_data.add(listData);
Log.i(TAG, "test2"+array.toString());
}
adapter.notifyDataSetChanged();
rvcy.setVisibility(list_data.isEmpty() ? View.GONE : View.VISIBLE)
emptyView.setVisibility(list_data.isEmpty() ? View.VISIBLE : View.GONE)
关于android - 如果recyclerview为空android如何显示textview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61648994/