2016-06-28 127 views
0

我添加了RecyclerView及其適配器,但是當我構建該應用程序時,它會在Android Studio的消息視圖中顯示構建錯誤。它指出了我創建的RecycleAdapter中的錯誤。構建應用程序時RecyclerView適配器中的錯誤

Error:(63, 12) error: cannot access ScrollingView 
class file for android.support.v4.view.ScrollingView not found 

Error:(20, 8) error: cannot access NestedScrollingChild 
class file for android.support.v4.view.NestedScrollingChild not found 

Error:(20, 88) error: type argument CategoryRecycleAdapter.ViewHolder is not within bounds of type-variable VH 

where VH is a type-variable: 
VH extends android.support.v7.widget.RecyclerView.ViewHolder declared in class Adapter 
Error:(30, 9) error: cannot find symbol variable this 

Error:(31, 9) error: cannot find symbol variable this 

Error:(34, 5) error: method does not override or implement a method from a supertype 

Error:(37, 16) error: an enclosing instance that contains CategoryRecycleAdapter.ViewHolder is required 

Error:(40, 5) error: method does not override or implement a method from a supertype 
Error:(55, 9) error: cannot find symbol method notifyDataSetChanged() 

Error:(58, 5) error: method does not override or implement a method from a supertype 

這裏是適配器的代碼:

public class CategoryRecycleAdapter extends RecyclerView.Adapter<CategoryRecycleAdapter.ViewHolder> { 

Context mContext; 
ArrayList<Category> alData; 


public CategoryRecycleAdapter() { 
} 

public CategoryRecycleAdapter(Context mContext, ArrayList<Category> alData) { 
    this.mContext = mContext; 
    this.alData = alData; 
} 

@Override 
public CategoryRecycleAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view = LayoutInflater.from(mContext).inflate(R.layout.row_category, parent, false); 
    return new CategoryRecycleAdapter.ViewHolder(view); 
} 

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 

    holder.tvName.setText("" + alData.get(position).displayName); 
    Picasso.with(mContext) 
      .load(alData.get(position).iconUrl) 
      .into(holder.ivCategory); 

} 

public void addAll(ArrayList<Category> data) { 
    if (data != null) { 
     alData.clear(); 
     alData.addAll(data); 
    } 
    notifyDataSetChanged(); 
} 

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

public class ViewHolder extends RecyclerView.ViewHolder { 
    TextView tvName; 
    ImageView ivCategory; 

    public ViewHolder(View itemView) { 
     super(itemView); 
     tvName = (TextView) itemView.findViewById(R.id.tvCategory); 
     ivCategory = (ImageView) itemView.findViewById(R.id.ivCategory); 
    } 
}} 

回答

0

我相信這行是你的罪魁禍首:

public class CategoryRecycleAdapter extends RecyclerView.Adapter<CategoryRecycleAdapter.ViewHolder> 

你引用的類CategoryRecycleAdapter的基本ViewHolder。嘗試擴展您聲明爲私有內部類的ViewHolder。

public class ViewHolder extends RecyclerView.ViewHolder 

使這個版本,讓我知道,如果它不工作:

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

使用您的建議時出現同樣的錯誤。 –

0

進行這些更改您的代碼:

public class CategoryRecycleAdapter extends RecyclerView.Adapter< RecyclerView.ViewHolder> 

@Override 
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) 

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) 

變化onCreateViewHolder從CategoryRecycleAdapter.ViewHolder返回類型RecyclerView.ViewHolder

這應該解決的問題。

相關問題