其他分享
首页 > 其他分享> > 如何从BaseAdapter Android获取活动变量

如何从BaseAdapter Android获取活动变量

作者:互联网

我在MainActivity上有一个变量bill_id.
然后在MainActivity上,我也有列表视图类别,将onItemClick放在CategoryListAdapter上.
在这里,当我单击类别时,我想重新加载活动(这是新的意图)并传递变量,我想传递category_id和bill_id(来自MainActivity)

我如何从BaseAdapter获取bill_id值?

这是我的摘录:

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

解决方法:

很简单.使用适配器的构造函数将值从“活动”传递到适配器.这就是构造函数的用途.

就像在您的活动中一样

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

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

标签:listview,baseadapter,android
来源: https://codeday.me/bug/20191026/1935035.html