2017-01-25 12 views
0

私のアンドロイドアプリでは、Recyclerviewのレイアウトにデータを表示したいと考えています。ここで私はそれを参照してくださいいくつかのコードを指定します。私はそれの背後にある理由は何か分からないので。私を助けてください。前もって感謝します。ここでRecyclerビューnullオブジェクト参照のsetLayoutManager

fragment.xml

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom" 
    android:orientation="vertical"> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/rvDisplay" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="10dp" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp"> 

    </android.support.v7.widget.RecyclerView> 
</LinearLayout> 

、私はRecyclerViewのRAWファイルを指定します。

今raw.xml

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:card_view="http://schemas.android.com/tools" 
    android:id="@+id/cardView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="10dp" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="10dp" 
    android:layout_marginTop="10dp" 
    android:background="@color/colorWhite" 
    app:cardElevation="8dp" 
    card_view:cardCornerRadius="2dp" 
    card_view:cardUseCompatPadding="true"> 

    <RelativeLayout 
     android:id="@+id/footerView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom" 
     android:padding="10dp"> 

     <android.support.v7.widget.AppCompatTextView 
      android:id="@+id/txtListTitle" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="HMS Scrap" 
      android:textColor="@color/colorWhite" /> 

     <android.support.v7.widget.AppCompatTextView 
      android:id="@+id/txtListName" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/txtListTitle" 
      android:layout_marginTop="10dp" 
      android:text="HMS Scrap" 
      android:textColor="@color/colorWhite" /> 

    </RelativeLayout> 

</android.support.v7.widget.CardView> 

、私は、アダプタのファイル・コード

adapter.java今

public class ListAdapter extends RecyclerView.Adapter<ListAdapter.ListViewHolder> { 
    private Context mContext; 
    private List<ListModal> listTitle; 

    public ListAdapter(Context mContext, List<ListModal> listTitle) { 
     this.mContext = mContext; 
     this.listTitle = listTitle; 
    } 

    @Override 
    public ListAdapter.ListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View itemView = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.raw_list, parent, false); 

     return new ListAdapter.ListViewHolder(itemView); 
    } 

    @Override 
    public void onBindViewHolder(ListAdapter.ListViewHolder holder, int position) { 
     ListModal objListModal = listTitle.get(position); 
     holder.txtListTitle.setText(objListModal.getList_name()); 
     holder.txtListTitle.setText(objListModal.getList_title()); 
    @Override 
    public int getItemCount() { 
     return 0; 
    } 

    public class ListViewHolder extends RecyclerView.ViewHolder { 
     TextView txtListTitle, txtListName; 
     CardView cvList; 
     public ListViewHolder(View itemView) { 
      super(itemView); 

      txtListTitle = (TextView) itemView.findViewById(R.id.txtListTitle); 
      txtListName = (TextView) itemView.findViewById(R.id.txtListName); 
      cvList = (CardView) itemView.findViewById(R.id.cardView); 
     } 
    } 
} 

Fragment.java

に投稿します
RecyclerView rvDisplay; 
private ListAdapter adapter; 
private List<ListModal> lstmodal; 

public CreateListFragment() { 
    // Required empty public constructor 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

    View view = inflater.inflate(R.layout.fragment_create_list, container, false); 

    rvDisplay = (RecyclerView) view.findViewById(R.id.rvDisplay); 

    lstmodal = new ArrayList<>(); 

    final LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); 
    layoutManager.setOrientation(LinearLayoutManager.VERTICAL); 
    rvDisplay.setLayoutManager(layoutManager); 
    makeJsonArrayRequest(); 
    return view; 
} 

private void makeJsonArrayRequest() { 
    String cancel_req_tag = "list"; 

    JsonArrayRequest req = new JsonArrayRequest(URL_FOR_SELECT, 
      new Response.Listener<JSONArray>() { 
     @Override 
     public void onResponse(JSONArray response) { 
      Log.d("OnResponse", response.toString()); 

      try { 
       // Parsing json array response 
       // loop through each json object 
       for (int i = 0; i < response.length(); i++) { 

        JSONObject jsonObject = response.getJSONObject(i); 
        ListModal objListModal = new ListModal(); 
        if (!jsonObject.isNull("list_name")) { 
         objListModal.list_name = jsonObject.getString("list_name"); //here we can fetch webservice field 
        } 
        if (!jsonObject.isNull("list_title")) { 
         objListModal.list_title = jsonObject.getString("list_title"); //here we can fetch webservice field 
        } 

        lstmodal.add(i, objListModal); 
       } 

       adapter = new ListAdapter(getActivity(), lstmodal); 
       rvDisplay.setItemAnimator(new DefaultItemAnimator()); 
       rvDisplay.setAdapter(adapter); 

      } catch (JSONException e) { 
       e.printStackTrace(); 
       Toast.makeText(getActivity(), "Error: " + e.getMessage(), Toast.LENGTH_LONG).show(); 
      } 

     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      VolleyLog.d("VolleyError", "Error: " + error.getMessage()); 
      Toast.makeText(getActivity(), error.getMessage(), Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 

ここで私はあなたがレイアウトファイルを呼び出す断​​片コードでただしfragment.xml命名されたと言うのコードの最初のブロックで作業ログ

enter image description here

+0

このhttp://www.androidhive.info/2016/01/android-working-with-recycler-view/またはこのhttp://www.vogella.com/tutorials/AndroidRecyclerView/articleを参照してください。 .html –

+0

あなたに素晴らしい答えを与えるために、もしあなたがまだ尋ねていないのであれば、私たちを助けるかもしれません。あなたが[mcve]を提供できるなら、それは役に立つかもしれません。 – Mat

答えて

0

を参照してください、私はこのエラーを取得しています。このコードを試してみましたinflater.inflate(R.layout.fragment_create_list, ...)

フラグメントが持つものと同じレイアウトファイルを展開してください。

+0

はい同じレイアウトファイルを展開しますが、setLayoutManager @Mauinでエラーが発生します –

+0

onActivityCreatedメソッドの下にコードを配置してみてください –

0
@Override 
public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    rvDisplay = (RecyclerView) view.findViewById(R.id.rvDisplay); 

    lstmodal = new ArrayList<>(); 

    final LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); 
    layoutManager.setOrientation(LinearLayoutManager.VERTICAL); 
    rvDisplay.setLayoutManager(layoutManager); 
    makeJsonArrayRequest(); 
} 
関連する問題