2017-04-11 76 views
-2

當執行卡片查看回收視圖時,我遇到了問題。我在​​的課上實施了onBindViewHolder。但我想用ViewHolder,它延伸RecyclerView.ViewHolder。問題是,當我使用自定義ViewHolder時,android studio說你沒有實現onBindViewHolder。我不知道該怎麼做。有沒有android的主人?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

使用CardHeaderRecyclerAdapter.ViewHolder在泛型類型參數

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

感謝適配器!有效! :) –