如何从BaseAdapter Android获取活动变量

时间:2017-02-14 07:30:18

标签: android listview baseadapter

我在bill_id上有一个变量MainActivity. 然后在MainActivity上,我还有list view类别,我将onItemClick放在CategoryListAdapter.上 在这里,当我点击我要重新加载活动的类别new intent并传递变量时,我想传递category_idbill_id(来自MainActivity })

如何从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);
            }
        });

1 个答案:

答案 0 :(得分:4)

很简单。使用适配器的构造函数将值从Activity传递到适配器。这就是构造函数的用途。

与您的活动一样,

MyAdapter myAdapter = new MyAdapter(variable1, variable2);

现在在你的适配器中,

private int variable1, variable2;

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

现在,您可以在点击侦听器中轻松使用这些变量,并将它们传递给新意图。

你也可以在适配器中使用这些变量的setter,如

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

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

根据您的活动,在需要时执行此类操作,

myAdapter.setVariable1(10);

因此,这些是您从适配器内的活动访问变量的方法。