如何在recycler适配器类中使用getcontext()?

时间:2016-08-09 10:11:33

标签: java android android-recyclerview this

我有扩展了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;
    }
}

如何解决此错误?

3 个答案:

答案 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;
 }