2016-07-04 4 views
1

私のjsonデータはtextviewには表示されず、recyclerviewは非表示になっています。
私のXMLコードのrecyclerviewとのTextView:
RecyclerViewデータが空であり、フラグメント内にテキストビューが表示されます

<?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コードショーのTextView &非表示recyclerviewは:

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();} 

それが可能だいずれかにme.I新品です助けますアンドロイドコードで。

+0

あなたがここにあなたのJSONレスポンスを置くことができます!追加して、あなたのorderLists –

+0

とも私はあなたのリプレイ – Pavya

+0

pendingOrderProgressメソッドを追加メソッド 'updateUI()'をコード内で呼び出し、2回呼び出します(onCreateViewとprogressOrderProgressメソッド)。 – vinoth12594

答えて

2

を解決することを願っています以下のように行ってください、あなたは"gone"にごTextView"pendingnullorder"の可視性を設定しているとonCreateView方法では、あなたも設定していますRecyclerView"pending"View.GONEの可視性あなたの意見は一切見えていないようです。あなたの方法getProgressData(またはgetPendingData)で

あなたは(なし要素場合:pendingnullorder.setVisibility(View.VISIBLE);、そうでない場合:recyclerView.setVisibility(View.VISIBLE);)アダプタの大きさに応じて、このビューの1の可視性を変更する必要があり、かつonResponse方法で可視性を更新します。

ここで[EDIT]

は、あなたが何ができるかの例です:

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); 
    } 
} 
+0

私は私の答えを更新した例 – vinoth12594

+0

のための任意のコードを教えてくださいをしているどのように多くの項目: – Donkey

+0

updateUI()関数が呼び出していない更新されたコードを試しました。私はupdateUI()関数でlog.dを設定しましたが、ログは表示されませんでした。 – vinoth12594

1
  1. まず、データが空でないことを確認する必要があります。
  2. 次に、RecycleViewのデータを表示する方法を最適化できます。 onCreateView方法で

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

を削除 。 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には、あなたの問題

+0

これに動作していない – vinoth12594

+0

@vinothkumarをお待ちしております –

関連する問題