安卓:适配器类从getView传递按钮点击响应()方法来mainActivity适配器、方法来、按钮、mainActivity

2023-09-04 04:29:02 作者:努力学习

这个问题很简单。我已经写了延伸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(menu​​ItemList.get(位置).getTicketItemObject()getCategoryName());
        convertView.setBackgroundColor(Color.RED);
        打破;
    情况1:
        holder.menuItem.setText(menu​​ItemList.get(位置).getTicketItemObject()的getName());
        holder.quantity.setText(Integer.toString(menuItemList.get(position).getTicketItemObject().getItemCount()));
        打破;
     }

    返回convertView;
    }
 

解决方案

怎么样有一个参考的活动在arrayadapter的构造? 类似于

 公共YourArrayAdapter(YourActivity一){
     mActivity =一个;
}
 

和从onClickMethod指mActivity?

身边人都在用,YUNMAI筋膜枪Pro Design评测 小米有品上的专业级产品

在你的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.