1

我有个问题。在我的应用程序中,我有一个自定义 ListView,每行有两个 Button。我创建了一个扩展 ArrayAdapter 的类,我在其中尝试管理 Button 的 OnClickListner,但它不起作用。如果我按下一个按钮,什么都不会发生。这是我的课:

public class AdapterMovimentazioni extends ArrayAdapter<ItemWithIdMov> {

private Context context;
private ArrayList<ItemWithIdMov> items;
private LayoutInflater vi;

public AdapterMovimentazioni(Context context, ArrayList<ItemWithIdMov> items) {
    super(context, 0, items);
    this.context = context;
    this.items = items;
    vi = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;
    ViewHolder holder;
    final ItemWithIdMov i = items.get(position);
    if (convertView == null) {
        convertView = vi.inflate(R.layout.item_movimentazioni, null);
        holder = new ViewHolder();
        holder.icon = (ImageView) convertView.findViewById(R.id.imageMov);
        holder.data = (TextView) convertView.findViewById(R.id.DataMov);
        holder.importo = (TextView) convertView.findViewById(R.id.ImportoMov);
        holder.locale = (TextView) convertView.findViewById(R.id.localeMov);
        holder.delete = (Button) convertView.findViewById(R.id.ButtonDeleteMov);
        holder.set = (Button) convertView.findViewById(R.id.ButtonSetMov);

        holder.delete.setTag(holder);
        holder.delete.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Toast.makeText(context, "DELETEEEEEE", Toast.LENGTH_LONG);
            }
        });

        holder.set.setTag(holder);
        holder.set.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Toast.makeText(context, "SET", Toast.LENGTH_LONG);

            }
        });
        convertView.setTag(holder);

    } else {
        holder = (ViewHolder) convertView.getTag();
    }
    if (i != null) {
        holder.icon.setImageResource(i.getIcon());
        holder.data.setText(i.getData());
        holder.importo.setText(i.getImporto());
        holder.locale.setText(i.getLocName());
    }

    return convertView;
}

private class ViewHolder {

    public ViewHolder() {

    }

    protected Button delete;
    protected Button set;
    protected ImageView icon;
    protected TextView data;
    protected TextView importo;
    protected TextView locale;

}

你能帮助我吗??谢谢

4

2 回答 2

2

使用 Toast Like

Toast.makeText(context, "SET", Toast.LENGTH_LONG).show();
于 2013-10-21T10:51:45.783 回答
0

在创建视图声明 onClicklistener 后更改您的 getview 方法;

public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;
    ViewHolder holder;
    final ItemWithIdMov i = items.get(position);
    if (convertView == null) {
        convertView = vi.inflate(R.layout.item_movimentazioni, null);
        holder = new ViewHolder();
        holder.icon = (ImageView) convertView.findViewById(R.id.imageMov);
        holder.data = (TextView) convertView.findViewById(R.id.DataMov);
        holder.importo = (TextView) convertView.findViewById(R.id.ImportoMov);
        holder.locale = (TextView) convertView.findViewById(R.id.localeMov);
        holder.delete = (Button) convertView.findViewById(R.id.ButtonDeleteMov);
        holder.set = (Button) convertView.findViewById(R.id.ButtonSetMov);

        convertView.setTag(holder);

    } else {
        holder = (ViewHolder) convertView.getTag();
    }


        holder.delete.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Toast.makeText(context, "DELETEEEEEE", Toast.LENGTH_LONG);
            }
        });

        holder.set.setTag(holder);
        holder.set.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Toast.makeText(context, "SET", Toast.LENGTH_LONG);

            }
        });

    if (i != null) {
        holder.icon.setImageResource(i.getIcon());
        holder.data.setText(i.getData());
        holder.importo.setText(i.getImporto());
        holder.locale.setText(i.getLocName());
    }

    return convertView;
}
于 2013-10-21T11:00:35.690 回答