2016-08-09 8 views
0

Ich habe Adapter-Klasse, die Recyclerview.Adapter erweitert und ich muss folgenden Code in dieser Klasse verwenden, aber es ist ein Fehler auf "das".Wie kann ich getcontext() in Recycler-Adapter-Klasse verwenden?

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

Wie behebt man diesen Fehler?

+1

Sie Aktivitätskontext übergeben müssen, wenn Sie Adapter aufrufen, bevor es in recyclerview einzustellen. – KrishnaJ

+0

@KrishnaJ wie geht das? – Amix

Antwort

0

Führen Sie den Kontext, in dem Konstruktor des Adapters wie:

Context context; 
public YourAdapter(Context c) { 
    this.context = c; 
} 

nun diesen Kontext statt dessen verwendet werden.

den Kontext weitergeben müssen:

mAdapter = new YourAdapter(getContext()); 
recyclerview.setAdapter(mAdapter); 

Wenn Sie Ihren Adapter aus einer Aktivität verwenden, dann ActivityName.this anstelle von getContext() verwenden.

0

In Aktivität Sie haben wie dies zu tun:

Aktivität

mAdapter = new CardViewDataAdapter(bank_list, context); 
    recyclerView.setAdapter(mAdapter); 
    recyclerView.setHasFixedSize(true); 
    recyclerView.setLayoutManager(new LinearLayoutManager(this)); 

I Adapter, den Sie wie folgt zu erreichen:

Adapter

public CardViewDataAdapter(ArrayList<Bank> bank_list, Context context) { 
    dataSet = bank_list; 
    ctx = context; 
} 
+0

context = getApplicationContext(); – KrishnaJ

+0

Wenn es funktioniert, dann akzeptiere die Antwort. – KrishnaJ

1

In Ihrem Recycler Adapterklasse

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); 
    } 

es den ganzen Adapter Klasse verwenden ... keine Notwendigkeit Kontext oder irgendetwas passieren ..

Verwandte Themen