O_Casper_ne 2013-05-24 05:28 采纳率: 7.7%
浏览 7674
已采纳

在listview中找到点击的行,获取数据

我使用自定义的 adapter在ArrayList中显示items。每一行item都2个 textViews和1个按钮。
依据一个属性的状态,在图像按钮上的图像会改变。当点击image button时,如何从行的item(orderID )中或取信息?

public class OrderedAdapter extends ArrayAdapter<RMOrder> {

private Context context;
private RMOrder rowItem;
private ListView lv;
private int clickedID;
private ArrayList<RMOrder>items;
private int orderID;
private ViewHolder holder;

public OrderedAdapter(Context context, int textViewResourceId, List<RMOrder> objects) {
    super(context, textViewResourceId, objects);
    this.context = context;
}

/*private view holder class*/
private class ViewHolder {
    ImageButton deleteButton;
    TextView txtMenuName;
    TextView txtMenuDesc;
    TextView txtMenuPrice;
    int orderID;
}

public View getView(final int position, View convertView, ViewGroup parent) {
    holder = null;
    rowItem = getItem(position);
    LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.basket_list_row, null);
        holder = new ViewHolder();
        holder.txtMenuName = (TextView) convertView.findViewById(R.id.menuNameText);
        holder.txtMenuDesc = (TextView) convertView.findViewById(R.id.menuDetailText);
        holder.deleteButton = (ImageButton) convertView.findViewById(R.id.menuDelete);
        holder.txtMenuPrice = (TextView) convertView.findViewById(R.id.menuPrice);
        holder.orderID = 0;
        lv = (ListView) convertView.findViewById(R.id.orderedList);
        convertView.setTag(holder);
    } else
        holder = (ViewHolder) convertView.getTag();

    String detailsString = "";
    double price = rowItem.getPrice();

    for (RMOption i : rowItem.getOption()) {
        detailsString += "-" + i.getName();
        price += i.getExtraPrice();
    }

    holder.orderID = rowItem.getId();
    holder.txtMenuName.setText(rowItem.getMenuName());
    holder.txtMenuDesc.setText(detailsString);
    holder.txtMenuPrice.setText(Double.toString(price) + " TL");
    holder.deleteButton.setFocusable(false);

    items = new ArrayList<RMOrder>(GlobalList.orderedItemsList.values());
    clickedID = items.get(position).getId();
    orderID = holder.orderID;
    //change image of image button
    if(rowItem.getStatus().equals("pending")){
        holder.deleteButton.setImageResource(R.drawable.rsz_pending);
        holder.deleteButton.setOnClickListener(new OnClickListener() {
            //TODO Burada tıklananı bulmakta sıkıntı var
            public void onClick(View v) {

                       //GET ORDER ID
            }
       });
    else
        holder.deleteButton.setImageResource(R.drawable.rsz_approved);
    }
    return convertView;
}
  • 写回答

1条回答

  • ssummeraw 2013-05-24 09:28
    关注

    给 deleteButton tag 设置位置

    holder.deleteButton = (ImageButton) convertView.findViewById(R.id.menuDelete);
    holder.deleteButton.setTag(position);   
    

    然后设置 onClick 方法

    holder.deleteButton.setOnClickListener(new OnClickListener() {
            //TODO Burada tıklananı bulmakta sıkıntı var
            public void onClick(View v) {
                      int pos = Integer.parseInteger(v.getTag());
                      RMOrder rItem = getItem(pos);
                      int orderId = rowItem.getId();
            }
       });
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题