2016-11-02 11 views
1

から位置を取得: 私はない作品のthats MovieViewHolder onCreateViewHolderクラスパラメータのパスint型の位置:(私はこれが私のクラスであるrecyclerview.Adapterクラスを持っている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);} 

がちょうど

+1

'position'に直接アクセスすることはできません。代わりに 'getItemId()'メソッドを使用してください。 'getItemId()'は位置を取得するためにも修正が必要です。 –

+0

これをテストしましたが...うまくいきません。 –

答えて

1

あなたはgetItemViewType(int position)メソッドをオーバーライドすることができます....その親と列の両方で虚偽を必要とし、そこにあなたの状態を入れてください。 (if(position%2 == 0)、その条件に基づいてビュータイプを返す)もちろん、2つのビュータイプを宣言し、基準に基づいて正しいタイプを返す必要があります。

あなたのonCreateViewHolderでは、viewTypeを確認してその位置のレイアウトを拡張することができます。

+0

このため行と条件を移動できません。 –

+0

MovieViewHolder holder = new MovieViewHolder(row); –

+1

いいえ、あなたはそれを得ていませんでした。あなたはそれを動かす必要はありません。 ifロジックを移動してビュータイプを返すだけで済みます。 (viewType == A)row = layoutInflater.inflate(R.layout.grid_list3、parent、false)など。あなたの例ではどちらの場合も同じレイアウトを展開しています。 – Alex

関連する問題