可能重复:
Android : Passing button click response from getView() method of adapter class to mainActivity
我编写了一个扩展ArrayAdapter的类。该适配器处理几个TEXTVIEW和一个按钮。对于每次按钮点击,我想通过意图与下一个活动建立双向通信。是否可以在getView()方法中使用startActivityForResult和OnActivityResult。如果是的话,请你告诉我如何使用它。
先谢谢。
以下是getView方法
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
int type = getItemViewType(position);
if (convertView == null) {
holder = new ViewHolder();
switch (type) {
case 0:
convertView = vi.inflate(R.layout.group, null);
holder.menuItem = (TextView) convertView.findViewById(R.id.tvGroup);
convertView.setBackgroundColor(Color.RED);
break;
case 1:
convertView = vi.inflate(R.layout.confirmitem, null);
holder.menuItem = (TextView) convertView.findViewById(R.id.tvConfirmItem);
holder.quantity = (TextView) convertView.findViewById(R.id.tvQuantity);
holder.cancel = (Button) convertView.findViewById(R.id.bCancel);
// cancel button
holder.cancel.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Log.i("ConfirmAdapter ","Button postion "+ position + "canceled item : " + menuItemList.get(position).getTicketItemObject().getName() );
}
});
break;
}
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
switch (type) {
case 0:
holder.menuItem.setText(menuItemList.get(position).getTicketItemObject().getCategoryName()) ;
convertView.setBackgroundColor(Color.RED);
break;
case 1:
holder.menuItem.setText(menuItemList.get(position).getTicketItemObject().getName());
holder.quantity.setText(Integer.toString(menuItemList.get(position).getTicketItemObject().getItemCount()));
break;
}
return convertView;
}
答案 0 :(得分:1)
试试这个让我知道:
伪代码(未经测试):
holder.cancel.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Log.i("ConfirmAdapter ","Button postion "+ position + "canceled item : " + menuItemList.get(position).getTicketItemObject().getName() );
}
((Activity) passedContext).startActivityForResult(.....) ;
});
其中,passContext是您需要在customadapter类的构造函数中初始化的上下文,如下所示。
class CustomAdapter extends ArrayAdapter
{
private Context passedContext;
CustomAdapter(Context context)
{
passedContext = context;
}
}
从主活动中实例化CustomAdapter时,请执行以下操作:
CustomAdapter adapter = new CustomAdapter(MainAcitvityClassName.this);
上面的结果会将结果返回给主活动,不过从非活动类开始。因此,您可能需要在MainActivity类中定义onActivityResult(...)。我想这就是你想要的。希望这会有所帮助。