Java RecyclerView数据为空,以片段形式显示textview

Java RecyclerView数据为空,以片段形式显示textview,java,android,android-fragments,android-recyclerview,Java,Android,Android Fragments,Android Recyclerview,我的json数据为空,以便在textview中可见并隐藏recyclerview。 我的xml代码recyclerview和textview: <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_heigh

我的json数据为空,以便在textview中可见并隐藏recyclerview。
我的xml代码recyclerview和textview:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="@dimen/common_padding"
>

<android.support.v7.widget.RecyclerView
    android:id="@+id/pending"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:scrollbars="vertical"
    />
<TextView
    android:id="@+id/pendingnullorder"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Current no orders available"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:textSize="@dimen/order_list_view_font_size"
    android:visibility="gone"
    />



我的java代码在此处显示文本视图和隐藏回收视图:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View drawer = inflater.inflate(R.layout.fragment_pending, container, false);

    pendingnullorder = (TextView) drawer.findViewById(R.id.pendingnullorder);

    recyclerView = (RecyclerView) drawer.findViewById(R.id.pending);
    progressBar = (ProgressBar) drawer.findViewById(R.id.progressBar);
    recyclerView.setVisibility(View.GONE);
    progressBar.setVisibility(ProgressBar.VISIBLE);

    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

    orderLists = new ArrayList<>();

    getProgressData();

    adapter = new OrderListAdapter(orderLists, getActivity());
    recyclerView.setAdapter(adapter);

    return recyclerView;
}
private void getProgressData(){
String token = SharedPreferencesManager.readPreferenceString("token", "D/N");
JSONObject progressData = new JSONObject();
try{
    progressData.put("token", token);
    JsonObjectRequest progressObject = new JsonObjectRequest(1, Common.OrderDetails + "progress", progressData, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject progressResponse) {
            Log.d("Responseprogress", progressResponse.toString());
            try {
                int status = progressResponse.getInt("status");
                if(status == 1) {
                    progressOrderProgress(progressResponse);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
            Log.d("Response", "PROGRESS ERROR");
        }
    });
    progressObject.setShouldCache(false);
    ServiceBellApp.getInstance().addToRequestQueue(progressObject);
}
catch (JSONException localJSONException){
    localJSONException.printStackTrace();
    return;
}}private void progressOrderProgress(JSONObject progressResponse) throws JSONException {
JSONArray result = progressResponse.getJSONArray("orderdata");
for(int i=0; i<result.length(); i++){
    OrderList orderListModule = new OrderList();
    JSONObject orderData = null;
    try {
        orderData = result.getJSONObject(i);
        orderListModule.setPackage_name(orderData.getString("name"));
        orderListModule.setOrderdate(orderData.getString("date"));
        orderListModule.setServicedate(orderData.getString("service"));
        orderListModule.setServicetime(orderData.getString("time"));
        orderListModule.setOrderid(orderData.getString("id"));
        orderListModule.setOrdstatus(orderData.getString("status"));
        orderListModule.setOrderamount(orderData.getInt("ramount"));
    }catch (JSONException e) {
        e.printStackTrace();
    }
    orderLists.add(orderListModule);
}
swipeRefreshLayout.setRefreshing(false);
adapter.notifyDataSetChanged();}
public View onCreateView(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图抽屉=充气机。充气(R.layout.fragment\u待定,容器,错误);
pendingnullorder=(TextView)drawer.findViewById(R.id.pendingnullorder);
recyclerView=(recyclerView)drawer.findViewById(R.id.pending);
progressBar=(progressBar)drawer.findViewById(R.id.progressBar);
recyclerView.setVisibility(View.GONE);
progressBar.setVisibility(progressBar.VISIBLE);
recyclerView.setHasFixedSize(true);
setLayoutManager(新的LinearLayoutManager(getActivity());
OrderList=新的ArrayList();
getProgressData();
adapter=新的OrderListAdapter(OrderList,getActivity());
recyclerView.setAdapter(适配器);
返回回收视图;
}
私有void getProgressData(){
String token=SharedReferencesManager.readPreferenceString(“标记”、“D/N”);
JSONObject progressData=新的JSONObject();
试一试{
progressData.put(“令牌”,令牌);
JsonObjectRequest progressObject=新的JsonObjectRequest(1,Common.OrderDetails+“progress”,progressData,new Response.Listener(){
@凌驾
公共void onResponse(JSONObject progressResponse){
Log.d(“Responseprogress”,progressResponse.toString());
试一试{
int status=progressResponse.getInt(“status”);
如果(状态==1){
progressOrderProgress(progressResponse);
}
}捕获(JSONException e){
e、 printStackTrace();
}
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
错误。printStackTrace();
Log.d(“响应”、“进度错误”);
}
});
progressObject.setShouldCache(false);
ServiceBellApp.getInstance().addToRequestQueue(progressObject);
}
catch(JSONException localJSONException){
localJSONException.printStackTrace();
返回;
}}私有void progressOrderProgress(JSONObject progressResponse)抛出JSONException{
JSONArray result=progressResponse.getJSONArray(“orderdata”);
对于(int i=0;i
  • 首先需要检查数据是否为空
  • 其次,我们可以优化显示数据的方式,以便进行RecycleView。 除去

    adapter=新的OrderListAdapter(OrderList,getActivity());
    recyclerView.setAdapter(适配器);

  • onCreateView
    方法中。在
    progressOrderProgress
    方法中,请执行以下操作

       if(adapter==null){
            adapter = new OrderListAdapter(orderLists, getActivity());
            recyclerView.setAdapter(adapter);
       } else {
            adapter.updateData(orderLists); // please define this method in your adapter
            adapter.notifyDataSetChanged();
       }
    

    希望它能解决您的问题

    在XML中,您已经将
    文本视图的可见性设置为
    “pendingnullorder”
    “gone”
    ,并且在
    onCreateView
    方法中,您还设置了
    回收视图的可见性
    视图。消失了
    。您似乎看不到任何视图

    在方法
    getProgressData
    (或
    getPendingData
    )中,应根据适配器的大小更改此视图之一的可见性(如果没有元素:
    pendingnullorder.setVisibility(view.VISIBLE);
    ,否则:
    recyclerView.setVisibility(view.VISIBLE);
    ),并在
    onResponse
    方法上更新可见性

    [编辑]

    下面是一个您可以做的示例:

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View drawer = inflater.inflate(R.layout.fragment_pending, container, false);
    
        pendingnullorder = (TextView) drawer.findViewById(R.id.pendingnullorder);
    
        recyclerView = (RecyclerView) drawer.findViewById(R.id.pending);
        progressBar = (ProgressBar) drawer.findViewById(R.id.progressBar);
        /*recyclerView.setVisibility(View.GONE);*/
        progressBar.setVisibility(ProgressBar.VISIBLE);
    
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(inflater.getContext()));
    
        orderLists = new ArrayList<>();
    
        getPendingData();
    
        adapter = new OrderListAdapter(orderLists, inflater.getContext());
        recyclerView.setAdapter(adapter);
    
        updateUI();
    
        return drawer;
    }
    
    private void getPendingData() {
        String token = SharedPreferencesManager.readPreferenceString("token", "D/N");
        JSONObject progressData = new JSONObject();
        try{
            progressData.put("token", token);
            JsonObjectRequest progressObject = new JsonObjectRequest(1, Common.OrderDetails + "progress", progressData, new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject progressResponse) {
                    Log.d("Responseprogress", progressResponse.toString());
                    try {
                        int status = progressResponse.getInt("status");
                        if(status == 1) {
                            progressOrderProgress(progressResponse);
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    error.printStackTrace();
                    Log.d("Response", "PROGRESS ERROR");
                }
            });
            progressObject.setShouldCache(false);
            ServiceBellApp.getInstance().addToRequestQueue(progressObject);
        }
        catch (JSONException localJSONException){
            localJSONException.printStackTrace();
            return;
        }
    }
    
    private void progressOrderProgress(JSONObject progressResponse) throws JSONException {
        JSONArray result = progressResponse.getJSONArray("orderdata");
        for(int i=0; i<result.length(); i++){
            OrderList orderListModule = new OrderList();
            JSONObject orderData = null;
            try {
                orderData = result.getJSONObject(i);
                orderListModule.setPackage_name(orderData.getString("name"));
                orderListModule.setOrderdate(orderData.getString("date"));
                orderListModule.setServicedate(orderData.getString("service"));
                orderListModule.setServicetime(orderData.getString("time"));
                orderListModule.setOrderid(orderData.getString("id"));
                orderListModule.setOrdstatus(orderData.getString("status"));
                orderListModule.setOrderamount(orderData.getInt("ramount"));
            }catch (JSONException e) {
                e.printStackTrace();
            }
            orderLists.add(orderListModule);
        }
        swipeRefreshLayout.setRefreshing(false);
        adapter.notifyDataSetChanged();
        updateUI();
    }
    
    private void updateUI() {
        if (adapter.getCount() == 0) {
            pendingnullorder.setVisibility(View.VISIBLE);
            recyclerView.setVisibility(View.GONE);
        } else {
            pendingnullorder.setVisibility(View.GONE);
            recyclerView.setVisibility(View.VISIBLE);
        }
    }
    
    创建视图时的公共视图(布局、充气机、视图组容器、捆绑包保存状态){ 视图抽屉=充气机。充气(R.layout.fragment\u待定,容器,错误); pendingnullorder=(TextView)drawer.findViewById(R.id.pendingnullorder); recyclerView=(recyclerView)drawer.findViewById(R.id.pending); progressBar=(progressBar)drawer.findViewById(R.id.progressBar); /*recyclerView.setVisibility(View.GONE)*/ progressBar.setVisibility(progressBar.VISIBLE); recyclerView.setHasFixedSize(true); setLayoutManager(新的LinearLayoutManager(inflater.getContext()); OrderList=新的ArrayList(); getPendingData(); adapter=新的OrderListAdapter(OrderList,inflater.getContext()); recyclerView.setAdapter(适配器); updateUI(); 退票抽屉; } 私有void getPendingData(){ String token=SharedReferencesManager.readPreferenceString(“标记”、“D/N”); JSONObject progressData=新的JSONObject(); 试一试{ progressData.put(“令牌”,令牌); JsonObjectRequest progressObject=新的JsonObjectRequest(1,Common.OrderDetails+“progress”,progressData,new Response.Listener(){ @凌驾 公共void onResponse(JSONObject progressResponse){ Log.d(“Responseprogress”,progressResponse.toString()); 试一试{ int status=progressResponse.getInt(“status”); 如果(状态==1){ progressOrderProgress(progressResponse); } }捕获(JSONException e){ e、 printStackTrace(); } } },new Response.ErrorListener(){ @凌驾 公共无效onErrorResponse(截击错误){ 错误。printStackTrace(); Log.d(“响应”、“进度错误”); } }); progressObject.setShouldCache(false); ServiceBellApp.getInstance().addToRequestQueue(progressObject); } catch(JSONException localJSONException){ localJSONException.printStackTrace(); 返回; } } 私有void progressOrderProgress(JSONObject progressResponse)抛出JSONException{ JSONArray result=progressResponse.getJSONArray(“订单