Java RecyclerView数据为空,以片段形式显示textview
我的json数据为空,以便在textview中可见并隐藏recyclerview。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
我的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(“订单