Anto
Anto

Reputation: 907

Button in ListView Item

I have a problem. In my app, i've got a custom ListView with two Button for each Row. I've created a class extends ArrayAdapter where i try to manage the OnClickListner of the Button, but it Doesn't work. If i press a buttton, nothing happens. This is my class:

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;

}

Can you help me?? Thank you

Upvotes: 1

Views: 126

Answers (2)

nurisezgin
nurisezgin

Reputation: 1570

change your getview method after createing views decleration onClicklistener;

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;
}

Upvotes: 0

Amit Gupta
Amit Gupta

Reputation: 8939

use Toast Like

Toast.makeText(context, "SET", Toast.LENGTH_LONG).show();

Upvotes: 2

Related Questions