2016-08-20 6 views
1

データの配列を表示するためにRecycleViewを使用したいと思います。RecycleViewのデータをアンドロイドでどのように整理するのですか?

これは私のAdapaterクラスで、データを表示しています。

public class DataAdapter extends RecyclerView.Adapter<DataAdapter.MyViewHolder>{ 

     private Context context; 
     private List<Pojo> dataList; 

     public DataAdapter(Context context, List<Pojo> dataList) { 
      this.context = context; 
      this.dataList = dataList; 
     } 

     @Override 
     public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
      View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_main,parent,false); 
      return new MyViewHolder(view); 
     } 

     @Override 
     public void onBindViewHolder(MyViewHolder holder, int position) { 
      holder.categoryTV.setText(dataList.get(position).getGameName()); 
     } 

     @Override 
     public int getItemCount() { 

      return dataList.size(); 
     } 

     public class MyViewHolder extends RecyclerView.ViewHolder{ 

      public TextView categoryTV; 

      public MyViewHolder(View itemView) { 
       super(itemView); 
       categoryTV = (TextView) itemView.findViewById(R.id.text); 
      } 
     } 
    } 

これはこれはMainActivityある

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:id="@+id/rellayout" 
    tools:context="com.acknotech.kiran.retrofit_second.MainActivity"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/text"/> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/my_recycler_view" 
     android:scrollbars="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

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

私activity_main.xml ..です

public class MainActivity extends AppCompatActivity { 

    private RecyclerView recyclerView; 
    private DataAdapter dataAdapter; 
    private List<Pojo> dataArrayList; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     initViews(); 
    } 

    private void initViews(){ 
     recyclerView=(RecyclerView) findViewById(R.id.my_recycler_view); 
     recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext())); 
     loadJSON(); 
    } 

    private void loadJSON(){ 
     dataArrayList = new ArrayList<>(); 
     Retrofit retrofit=new Retrofit.Builder().baseUrl("my url").addConverterFactory(GsonConverterFactory.create()).build(); 
     AllGamesAPI requestInterface=retrofit.create(AllGamesAPI.class); 

     Call<List<Pojo>> call= requestInterface.getJSON(); 
     call.enqueue(new Callback<List<Pojo>>() { 
      @Override 
      public void onResponse(Call<List<Pojo>> call, Response<List<Pojo>> response) { 
       dataArrayList = response.body(); 
       dataAdapter=new DataAdapter(getApplicationContext(),dataArrayList); 
       recyclerView.setAdapter(dataAdapter); 
      } 

      @Override 
      public void onFailure(Call<List<Pojo>> call, Throwable t) { 
        Log.e("Error",t.getMessage()); 
      } 

     }); 
    } 
} 

私は常に時間でなく、DataListコントロール、私に一つだけのアイテムを印刷し、それを実行してみてください11項目あります。

RecyclerViewを使用してページ内のすべてのアイテムを取得するにはどうすればよいですか?

おかげ&よろしく

+0

response.body()関数でさらに多くのオプションを確認してください –

+0

DataAdapterに11個の項目があります...疑問は、xmlデータでアダプタの11個の項目を処理する方法です。 – Jaccs

答えて

1

あなたはonCreateViewHolderに活動のレイアウトを膨らませるが、その代わりに一つだけのアイテム(例えばandroid.R.layout.simple_list_item_1、またはカスタム1)のレイアウトを膨らませるべきではありません。このレイアウトではアイテムの高さにmatch_parentを使用しないでください。

+0

はい、あなたはここでエラーを見つけたようです! –

+0

レイアウトを置き換えようとしたときに、私のアプリがクラッシュしてログに記録されていると思われます。:: java.lang.NullPointerException:仮想メソッドを呼び出そうとしました 'void android.widget.TextView.setText(java.lang.CharSequence ) 'null nullオブジェクトの参照 このエラーはログに記録されています。これは私がそのビューを返すので、MyViewHolderが親ビューとして使用するためだと思います。 – Jaccs

+0

また、テキストビューIDを調整する必要があります。 (simple_list_item_1はandroid.R.id.text1を使用します) – F43nd1r

関連する問題