android - 如果recyclerview为空android如何显示textview

标签 android android-recyclerview

如果 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/

相关文章:

android-opencv 使用 matToBitmap/bitmapToMat 将 mat 转换为灰度

java - 当我尝试更新 onPostExecute(...) 方法中的字段时,Android 应用程序崩溃

android - 在回收者 View 中显示广告

android - RecyclerView 不同步

java - Android RecyclerView 平滑滚动以查看其高度动画

java - 我的 get 方法返回 0,即使它有一个值

java - 如何在android中选择多个文件

android - 通过电池优化运行后台服务获取持续位置更新的最佳方式是什么?

android - 使用 Sugar ORM 填充 RecyclerView

android - 如何以编程方式滚动 recyclerView?