2017-02-14 5 views
3

Im имеющим переменным, bill_id на MainActivity. Тогда на MainActivity, я также list view категории, я поставил onItemClick на CategoryListAdapter. Здесь, когда я щелкните категорию я хочу, чтобы перезагрузить деятельность , который new intent, а также передавать переменные, я хочу передать category_id и bill_id (который от MainActivity)Как получить переменный на активности от BaseAdapter Android

, как я могу получить bill_id значение из BaseAdapter?

вот мой сниппет:

final int category_id = listData.get(position).getID(); 
     final String category_name = listData.get(position).get_name(); 

     holder.btnCategory.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v){ 
       Log.d(TAG, "click category:"+category_id); 
       Log.d(TAG, "category selected:"+category_name); 

       // get cat id, reload with its id 
       db = new DatabaseHelper(aContext); 

       // bring variable id, to POS interface 
       Intent intent = new Intent(aContext, MainActivity.class); 
       intent.putExtra("category_id", category_id); 
       v.getContext().startActivity(intent); 
      } 
     }); 
+0

Я новичок в программировании на Android, я не понимаю, как намерение может заставить меня получить доступ к переменной? – Gabriel

ответ

4

Это просто. Передайте значения из вашей активности в адаптер с помощью конструктора адаптера. Для этого нужны конструкторы.

Как и в вашей деятельности,

MyAdapter myAdapter = new MyAdapter(variable1, variable2); 

Теперь в вашем адаптере,

private int variable1, variable2; 

// Constructor 
public MyAdapter(int var1, int var2){ 
    this.variable1 = var1; 
    this.variable2 = var2; 
} 

Теперь вы можете легко использовать эти переменные в клик слушателя и передать их новому умыслом.

Вы также можете использовать сеттеры для этих переменных в адаптер, как,

public void setVariable1(int value){ 
    this.variable1 = value; 
} 

public void setVariable2(int value){ 
    this.variable2 = value; 
} 

И от вашей деятельности, сделать что-то вроде этого, когда это необходимо,

myAdapter.setVariable1(10); 

Таким образом, эти способы вы можете получить доступ к своим переменным из своей активности внутри вашего адаптера.

+0

Спасибо! @AritraRoy. решение работает как прелести! – Gabriel

Смежные вопросы