2016-06-28 3 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> 

вы обращаетесь к лежащей в основе ViewHolder из класса CategoryRecycleAdapter. Попробуйте расширить 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

это должно решить проблему.