我有扩展了recyclerview.adapter的适配器类,我需要在这个类中使用以下代码,但它在“this”上有错误。
public void addItems(int howMany){
if (howMany > 0) {
int lastInsertedIndex = 11;
for (int i = lastInsertedIndex + 1; i <= lastInsertedIndex + howMany; i++) {
mList.add(PreferenceManager.getDefaultSharedPreferences(this).getString("Item " + i));
notifyItemInserted(mList.size() - 1);
}
lastInsertedIndex = lastInsertedIndex + howMany;
}
}
如何解决此错误?
答案 0 :(得分:2)
在您的回收商适配器类
中 private Context context;
//some code...//
@Override
public CartListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
context=parent.getContext(); //here get the context
View cartItemRow= LayoutInflater.from(parent.getContext()).inflate(R.layout.cartitem_row_detail,parent,false);
return new CartListViewHolder(cartItemRow);
}
在整个适配器类中使用它...不需要传递上下文或任何东西..
答案 1 :(得分:0)
在适配器的构造函数中传递上下文,如:
Context context;
public YourAdapter( Context c) {
this.context = c;
}
现在使用此上下文代替此。
传递上下文:
mAdapter = new YourAdapter(getContext());
recyclerview.setAdapter(mAdapter);
如果您正在使用Activity中的适配器,请使用ActivityName.this代替getContext()。
答案 2 :(得分:0)
在活动中你必须这样做:
<强>活动强>
mAdapter = new CardViewDataAdapter(bank_list, context);
recyclerView.setAdapter(mAdapter);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
我适配器你可以这样:
<强>适配器强>
public CardViewDataAdapter(ArrayList<Bank> bank_list, Context context) {
dataSet = bank_list;
ctx = context;
}