rakesh menon
rakesh menon

Reputation: 1101

list view with button

i want a list view with one text box and one button for each list view row. how can i set the click event for each button in this list view

Upvotes: 0

Views: 1677

Answers (3)

Ayudh
Ayudh

Reputation: 710

if you used custom adapter for listview then you set clickevent on button or other views.you can't set onclickevent in main file because in that file we set onItemClickListener, if you want onclicklistener on particular view like button then you written your code in onClickListener code that write in the Adapter Class.

Below i show the adapter class.In which one onClickListener is apply on textview,same for button and other views,this code is in running mode

public class YourAdapterName extends BaseAdapter 
{

    private LayoutInflater mInflater;
    public YourAdapterName(Context context) {
        this.mInflater = LayoutInflater.from(context);
    }
    public int getCount() {
        return YourValue.length;
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) 
    {
        final ViewHolder holder;
        if (convertView == null) 
        {
            convertView = mInflater.inflate(R.layout.youradapterxmlfile, null);
            holder = new ViewHolder();
            holder.Name = (TextView) convertView.findViewById(R.id.YourAdapterVaraibleNameInXml);
        } 
        else 
        {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.Name.setOnClickListener(new View.OnClickListener() 
        {
            @Override
            public void onClick(View v) 
            {   
               // onClickEvent you written your code here 
            }
        });
        holder.Name.setText("XYZ");
        return convertView;
    }
    class ViewHolder 
    {
        TextView Name;
    }
}

Upvotes: 0

Rajath
Rajath

Reputation: 11926

If you override ArrayAdapter, you can use the getView() to set the onClick listener on each of the list's element's button:

class Ass extends ArrayAdapter<RowItem>
{
    @Override
    public android.view.View getView(int position, android.view.View convertView, android.view.ViewGroup parent)
    {
        View elem;
        Button btn;

        if (convertView == null)
        {
            elem = getLayoutInflater().inflate(R.layout.listview_elem, parent, false);
        }
        else
        {
            elem = convertView;
        }

        RowItem itm = getItem(position);
        btn = (Button) elem.findViewById(R.id.button);
        btn.setOnClickListener(new OnClickListener()
        {
            public void onClick(View arg0)
            {
                // TODO Auto-generated method stub
            }
        })

        return elem;
    }
};

Upvotes: 4

sat
sat

Reputation: 41076

When you are extending BaseAdapater , you will be overriding getView() , set the click listener(by getting reference to your button) in the getView().

Upvotes: 0

Related Questions