2015-08-02 2 views
1

Так что я пытаюсь создать gridlayout с recyclerview с каждой сеткой, представляющей карту. Я тестирую его, пытаясь загрузить числовые изображения, например, 0,1,2 .... в ожидаемые позиции. Но цифры просто продолжают прыгать в проводных местах, иногда повторяясь. Я предполагаю, что это проблема адаптера. Не могли бы вы посмотреть на мой код и рассказать мне, где я ошибаюсь.RecyclerView не отображает желаемую карту в ожидаемой позиции?

public class GridAdapter extends RecyclerView.Adapter<GridAdapter.ViewHolder> { 
private Context context; 
String[] numbers; 
public GridAdapter(Context context){ 
    super(); 
    this.context=context; 

} 
@Override 
public GridAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 

    View v = LayoutInflater.from(viewGroup.getContext()) 
      .inflate(R.layout.grid, viewGroup, false); 
    ViewHolder viewHolder = new ViewHolder(v); 
    return viewHolder; 
} 

@Override 
public void onBindViewHolder(GridAdapter.ViewHolder viewHolder, int i) { 
    String[] numbers={//contains url's for number images strating from 0}; 
    Picasso.with(context).load(numbers[i]).into(ViewHolder.imageView); 

} 

@Override 
public int getItemCount() { 
    return return numbers.length; 
} 


static class ViewHolder extends RecyclerView.ViewHolder{ 

    public static ImageView imageView; 

    public ViewHolder(View itemView) { 
     super(itemView); 
     imageView = (ImageView)itemView.findViewById(R.id.image); 
    } 
} 
} 

и числом массива образом заполняется с помощью AsyncTask в основной деятельности и recyclerview и LayoutManager устанавливаются в OnCreate и адаптер устанавливается в onPostExecute от AsyncTask.

ответ

1

Ваш ViewHolder не работает должным образом. Ссылка на ImageView не должна быть static, потому что у вас будет несколько ViewHolders для списка, и вы не сможете хранить ссылки таким образом.

Исправьте ViewHolder и он будет работать правильно.

См. Пример: https://developer.android.com/training/material/lists-cards.html

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