我正在上adapter
课程,我需要将invoiceId
传递给Activity
课程。我已经看到了一些像传递接口这样的例子,但是我在跟踪代码过程时失去了轨道。
这是我的适配器类扩展BaseAdapter
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
companyName = ct.getSharedPreferences("prefs", 0);
Log.d("test", "" + deliveryListBeans.size());
LayoutInflater inflater = (LayoutInflater) ct.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.list_vew_for_delivery_order, null);
TextView invoice = (TextView) v.findViewById(R.id.invoice);
final TextView delivery = (TextView) v.findViewById(R.id.do_delivery);
final DeliveryListBean dlb = deliveryListBeans.get(position);
invoice.setText(dlb.getInvoiceNo());
}
delivery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ct.startActivity(new Intent(ct, EmployeesListForPopUp.class));
DeliveryOrdersListAdapter deliveryOrdersListAdapter=new DeliveryOrdersListAdapter(EmployeesListForPopUp.this);
}
});
}
这是我的活动类
public class EmployeesListForPopUp extends Activity {
private List<EmployeeIdNameBean> employeeIdNameBeans = new ArrayList<EmployeeIdNameBean>();
ListView listView;
SharedPreferences companyName;
EmployeePopUpAdapter employeePopUpAdapter;
private ImageView img1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_employees_list_for_pop_up);
我需要从Adapter Class获取invoiceId。怎么样?
答案 0 :(得分:0)
您需要在适配器构造函数中传递活动的上下文。
然后在适配器的clickevents中设置activity.invoiceid值。
答案 1 :(得分:0)
一种简单的方法是在MainActivity中编写一个方法
public void setInvoiceId(int invoiceId) {
// do what you want with invoiceId
}
并将您的活动实例传递给适配器
DeliveryOrdersListAdapter adapter = new DeliveryOrdersListAdapter(EmployeesListForPopUp.this);
并在适配器中获取并保留
EmployeesListForPopUp myActivity;
public MyAdapter(EmployeesListForPopUp activity) {
myActivity = activity;
}
您需要传递invoiceId的地方只需调用主要活动的方法
myActivity.setInvoiceId(invoiceId);
答案 2 :(得分:0)
实施它的一般方法:
invoice.setTag(Integer.valueOf(位置)的ToString());
您需要使列表中的项目可单击(这超出了本问题的范围)。因此,当您单击某个项目时 - 您可以检索它具有的任何数据,特别是标记 - getTag();.
然后您将Intent发送到其他活动,将标记作为额外消息提供。因此,该活动将“知道”与其相关的数组列表中的哪个项目(即tag == position,right?)。并从那里继续。
我实施了一个简单的项目来说明它。这个项目是使用ArrayList适配器的简单演示和说明, 在ListView中显示该项目,单击某个项目并在分离的活动中显示相关数据。请下载并尝试(最低API 21)。 README文件中提供了基本描述。 该项目在GitHub上:
(纠正路径)