2017-04-11 19 views
-2

カードビューのリサイクラビューを実装する際に問題がありました。​​を拡張するクラスにonBindViewHolderを実装しました。しかし、私はを拡張するViewHolderを使用したいと思います。問題は、私がカスタムViewHolderを使用すると、アンドロイドスタジオはあなたが実装されていないと言っていますonBindViewHolder。私はそれをする方法を知らない。アンドロイドのマスターはありますか?android onBindViewHolderは実装されていなくても実装されています

これは私のソースコードです。

package com.example.beyongha.zipv2; 

import android.content.Context; 
import android.graphics.drawable.Drawable; 
import android.support.v4.content.ContextCompat; 
import android.support.v7.view.menu.MenuView; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.TextView; 
import android.widget.Toast; 
import android.support.v7.widget.CardView; 


import java.util.ArrayList; 
import java.util.List; 

public class CardHeaderRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { 
private static final int VIEW_TYPE_HEADER = 0; 
private static final int VIEW_TYPE_ITEM = 1; 

Context context; 
List<Item> items; 
int item_layout; 


public CardHeaderRecyclerAdapter(Context context, List<Item> items, int item_layout) { 
    this.context = context; 
    this.items = items; 
    this.item_layout = item_layout; 
} 

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 
    final Item item = items.get(position); 
    Drawable drawable = ContextCompat.getDrawable(context, item.getImage()); 
    holder.image.setBackground(drawable); 
    holder.title.setText(item.getTitle()); 
    holder.cardview.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(context, item.getTitle(), Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 

@Override 
public int getItemCount() { 
    return this.items.size(); 
} 

@Override 
public int getItemViewType(int position) { 
    return (position == 0) ? VIEW_TYPE_HEADER : VIEW_TYPE_ITEM; 
} 


@Override 
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_cardview, null); 
    return new ViewHolder(v); 
} 





static class HeaderViewHolder extends RecyclerView.ViewHolder { 
    public HeaderViewHolder(View view) { 
     super(view); 
    } 
} 



public class ViewHolder extends RecyclerView.ViewHolder { 
    ImageView image; 
    TextView title; 
    CardView cardview; 

    public ViewHolder(View itemView) { 
     super(itemView); 
     image = (ImageView) itemView.findViewById(R.id.image); 
     title = (TextView) itemView.findViewById(R.id.title); 
     cardview = (CardView) itemView.findViewById(R.id.cardview); 
    } 
} 
} 

答えて

0

ジェネリック型パラメータで

public class CardHeaderRecyclerAdapter extends RecyclerView.Adapter<CardHeaderRecyclerAdapter.ViewHolder> 
+0

おかげで、あなたのCardHeaderRecyclerAdapter.ViewHolderを使用してアダプターを拡張!出来た! :) –

関連する問題