2016-08-20 2 views
1

Я хотел бы использовать RecycleView для отображения моего массива данных.Как упорядочить данные в RecycleView в Android?

Это мой класс 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); 
      } 
     } 
    } 

Это мой activity_main.xml

<?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> 

Это MainActivity ..

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

Я получаю 11 элементов для DataAdapter ... Мое сомнение в том, как обрабатывать 11 элементов в адаптере по XML-данным. – Jaccs

ответ

1

Вы не должны раздуть макет деятельности в onCreateViewHolder, но вместо того, чтобы раздуть макет только один пункт (например, android.R.layout.simple_list_item_1 или обычая один). Этот макет не должен использовать match_parent для высоты предметов.

+0

Да, вы, кажется, заметили ошибку здесь! –

+0

Когда я пытаюсь заменить макет, что вы предложили, мое приложение рушится и в журнале .. :: java.lang.NullPointerException: попытка вызвать виртуальный метод 'void android.widget.TextView.setText (java.lang.CharSequence) 'по ссылке нулевого объекта Эта ошибка, которую я видел в журнале. Я думаю, что это потому, что я возвращаю это представление и он используется MyViewHolder в качестве родительского представления. – Jaccs

+0

Вы также должны отрегулировать идентификатор textview. (simple_list_item_1 использует android.R.id.text1) – F43nd1r

Смежные вопросы