How to use the onClickListener method of a button in a ListView

I have a custom ListViewone that contains Button. The function of this button is the β€œDelete” button. Whenever the user clicks this button, the current line will be deleted.

  • How can i do this?
  • How to set onClickListenerfor this button?
  • How can I catch the id of the row on which this button is enabled?

Thanks in advance.

+5
source share
7 answers

In Custom Adapater classgetView()

buttonDelete.setOnClickListener(new OnClickListener()
{
  @Override
  public void onClick(View v)
   {
     //  Use position parameter of your getView() in this method it will current position of Clicked row button
    // code for current Row deleted...              
   }
});
+7
source

-, . : myButton.setOnClickListener(mBuyButtonClickListener). getView(...) ListView.

, , myListView.getPositionForView(myButton). :

private OnClickListener mBuyButtonClickListener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        final int position = getListView().getPositionForView(v);
        if (position != ListView.INVALID_POSITION) {
            //DO THE STUFF YOU WANT TO DO WITH THE position
        }
    }
};

, .

, , ListView. .

+4

getView .

holder.button.setOnClickListener(new OnClickListener()
{
  @Override
  public void onClick(View v)
   {

   }
});
+1

, , .

, HolderView getView adpater:

:

    static class ViewHolder
{
    TextView text1;
    TextView text2;
    TextView text3;
}

, :

TextView text1;
TextView text2;
TextView text3;

getView:

holder = new ViewHolder(); 
holder.text1 = (TextView) vi.findViewById(R.id.textView2single);
holder.text2 = (TextView) vi.findViewById(R.id.textView3single);
holder.text3 = (TextView) vi.findViewById(R.id.textView4single);

onClick, :

View parentView = (View) v.getParent();

:

text1 = (TextView) parentView.findViewById(R.id.textView2single);
text2 = (TextView) parentView.findViewById(R.id.textView3single);
text3 = (TextView) parentView.findViewById(R.id.textView4single);

im onClick , , , . , , .

+1

, BaseAdapter OnClickListener

public class ListAdapter extends BaseAdapter implements OnClickListener {}

getView

@Override
public View getView(int
        position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    View row = convertView;
    ViewHolder holder = null;

    if (row == null) {
        LayoutInflater inflater = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        row = inflater.inflate(R.layout.list_item, parent, false);
        holder = new ViewHolder();
        holder.b1= (Button) row.findViewById(R.id.b1);
        b1.setOnClickListener(this);
    else {

        holder = (ViewHolder) row.getTag();

    }
}

onclick

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
        case R.id.b1:
            //button b1 click event 
            break;
    }
}

public class ViewHolder {
    Button b1;
}
0

View currenView (, iit ). (ImageButton, ) viewId .

 public View getView(int position, View convertView, ViewGroup parent) {
        View itemview=convertView;
        if (itemview==null)
        {
            itemview=getLayoutInflater().inflate(R.layout.group_list,parent,false);

        }
        final group_contacts currentcontact=g_contact.get(position);
        ImageButton delete=(ImageButton) itemview.findViewById(R.id.imgbtn_delete);
        delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Add your code here to run on tapping button
            }
        });
        return itemview;


    }
0

onClickListener() Button a ListView, onClickListener() Adapter getView Methode.

, position getView.

position , , getPositionForView() ListView.

,

  • ListView ExampleListview

  • A Buttonon it with a name ExampleButton, and you want to use onClickListener()on it.

    Examplebutton.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
            final int position= ExampleListview..getPositionForView(v);
       /*Where 'v' is actually the 'View' object Which you are clicking.*/ 
    
    /*you can now right your code her & determine the your desired button by
      using the position parameter */
    }
    
0
source

All Articles