这个问题很简单。我已经写了延伸ArrayAdapter一个单独的类。该适配器处理夫妻TEXTVIEWs和一个按钮。问题是我不知道我是否需要写在getView()方法将main_activity了从巴顿的onClickListener回应。该main_activity具有基于按钮响应应遵循许多逻辑。可否请你让我知道如何让按钮响应main_activity?
以下是getView方法
公开查看getView(最终诠释的立场,观点convertView,ViewGroup中父){
ViewHolder持有人;
整型= getItemViewType(位置);
如果(convertView == NULL){
持有人=新ViewHolder();
开关(类型){
情况下0:
convertView = vi.inflate(R.layout.group,NULL);
holder.menuItem =(TextView中)convertView.findViewById(R.id.tvGroup);
convertView.setBackgroundColor(Color.RED);
打破;
情况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 =(按钮)convertView.findViewById(R.id.bCancel);
//取消按钮
holder.cancel.setOnClickListener(新View.OnClickListener(){
公共无效的onClick(视图v){
Log.i(ConfirmAdapter,巴顿现在的位置是+位置+取消项目:+ menuItemList.get(位置).getTicketItemObject()的getName());
}
});
打破;
}
convertView.setTag(保持器);
} 其他 {
支架=(ViewHolder)convertView.getTag();
}
开关(类型){
情况下0:
holder.menuItem.setText(menuItemList.get(位置).getTicketItemObject()getCategoryName());
convertView.setBackgroundColor(Color.RED);
打破;
情况1:
holder.menuItem.setText(menuItemList.get(位置).getTicketItemObject()的getName());
holder.quantity.setText(Integer.toString(menuItemList.get(position).getTicketItemObject().getItemCount()));
打破;
}
返回convertView;
}
解决方案
怎么样有一个参考的活动在arrayadapter的构造? 类似于
公共YourArrayAdapter(YourActivity一){
mActivity =一个;
}
和从onClickMethod指mActivity?
在你的YourActivity你可以从那里叫做 onItemButtonClicked()
方法。
The question is simple. I have written a seperate class which extends ArrayAdapter. This adapter deals with couple of TEXTVIEWs and a BUTTON. The problem is I am not sure whether I have take the response from Button's onClickListener written in getView() method to the main_activity. The main_activity has lot of logic to be followed based on the button response. Could you please let me know how to get the button response to main_activity ?
Following is the getView method
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;
}
解决方案
How about having a reference to the activity in your arrayadapter's constructor? Something like
public YourArrayAdapter(YourActivity a){
mActivity = a;
}
And referring mActivity from the onClickMethod?
In your YourActivity you can have an onItemButtonClicked()
method to be called from there.