У меня есть класс recyclerview.Adapter это мой класс: , когда я передача INT позиция в параметрах класса MovieViewHolder onCreateViewHolder то не работает :(получить позицию из RecyclerView.Adapter
public class Main_Recycle_Adapter extends RecyclerView.Adapter<Main_Recycle_Adapter.MovieViewHolder> {
List<Main> movies = Collections.emptyList();
LayoutInflater layoutInflater;
Context context;
public Main_Recycle_Adapter(Context context, List<Main> movies){
this.context = context;
layoutInflater = LayoutInflater.from(context);
this.movies = movies;
}
//;;;;;;;;;;;;;;
@Override
public int getItemCount() {
return movies.size();
}
@Override
public long getItemId(int position) {
return position;
}
//[[[[[[[[[[[[[[[[[[
@Override
public MovieViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View row;
if ((position % 2) == 0){
row = layoutInflater.inflate(R.layout.grid_list3, parent, false);}
else{row = layoutInflater.inflate(R.layout.grid_list3, null);}
MovieViewHolder holder = new MovieViewHolder(row);
return holder;
}
@Override
public void onBindViewHolder(MovieViewHolder holder, int position) {
Main thisMovie = movies.get(position);
holder.tozih.setText(thisMovie.getName());
holder.tablooo.setImageResource(context.getResources().getIdentifier(thisMovie.getLogo(), "mipmap", context.getPackageName()));
}
public class MovieViewHolder extends RecyclerView.ViewHolder {
private TextView tozih;
private ImageView tablooo;
public MovieViewHolder(View itemView) {
super(itemView);
tozih = (TextView) itemView.findViewById(R.id.textView1);
tablooo = (ImageView) itemView.findViewById(R.id.imageView1);
}
}
}
здесь я хочу положение для четных и нечетных строк:
if ((position % 2) == 0){
row = layoutInflater.inflate(R.layout.grid_list3, parent, false);}
else{row = layoutInflater.inflate(R.layout.grid_list3, null);}
, но позиция по-прежнему красный с не может устранить ошибку что я могу сделать в этом случае заранее спасибо
?EDIT благодаря Алексу я получил это сделано:
@Override
public int getItemViewType(int position)
{ int viewType ;
if((position % 2) == 0)
viewType = 0;
else
viewType =1;
return viewType; }
//[[[[[[[[[[[[[[[[[[
@Override
public MovieViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
View row;
if (viewType == 0){
row = layoutInflater.inflate(R.layout.grid_list2, parent, false);}
else
{ row = layoutInflater.inflate(R.layout.grid_list3, parent, false);}
просто необходимо, что родитель и ложна в обоих рядах ....
Вы не можете напрямую обращаться к 'position'. Вместо этого используйте метод getItemId(). 'GetItemId()' также нуждается в исправлении, чтобы получить позицию. –
Я тестировал это, но ... не работает –