自定义 ArrayAdapter、listView、按钮

Custom ArrayAdapter, listView, button

我尝试捕捉 MainActivity 中按钮的点击,但这对我不起作用。 怎么做。 我把吐司放在我的 getView 中它似乎工作,但如何捕捉 MainActivity 中的点击。

@Override
public View getView(final int position, View convertView, ViewGroup parent){


    LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);


    rowView = inflater.inflate(R.layout.gestionmaps, parent, false);


    textView   = (TextView) rowView.findViewById(R.id.textView02);
    btn2       = (Button) rowView.findViewById(R.id.spinner02);
    btn        = (Button) rowView.findViewById(R.id.del02);

    textView.setText(values.get(position));

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




            Toast.makeText(context, "btn "+position, Toast.LENGTH_SHORT).show();

        }
    });

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

            Toast.makeText(context, "btn0 "+position, Toast.LENGTH_SHORT).show();

        }
    });

return rowView;

}

您的代码无效,因为当您单击 button1button2 时,点击被 List Item

占用

解法:

@Override
public View getView(final int position, View convertView, ViewGroup parent){


    LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);


    rowView = inflater.inflate(R.layout.gestionmaps, parent, false);


    textView   = (TextView) rowView.findViewById(R.id.textView02);
    btn2       = (Button) rowView.findViewById(R.id.spinner02);
    btn        = (Button) rowView.findViewById(R.id.del02);

    textView.setText(values.get(position));

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




            Toast.makeText(context, "btn "+position, Toast.LENGTH_SHORT).show();

        }
    });

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

            Toast.makeText(context, "btn0 "+position, Toast.LENGTH_SHORT).show();

        }
    });
rootView.setOnClickListener(new OnClickListener() {

       @Override
      public void onClick(View view) {
       // put logs here to check if it is executed when you click outside button area
      }

    });
return rowView;

}

为了让您的按钮 onClickYourActivity 中添加此 android:onClick 行到您的 Button xml 文件。

list_item.xml

<Button
    android:onClick="onClickButtonOne"
    .../>

Activity.java

public void onClickButtonOne(View v) {
    // button one onclick here.
    int position = listview.getPositionForView(v);
}