0

我有一个Listview,每一行都有一个Button。如果我按Button我想Toast显示一个。

我已经知道如何设置onItemClickListener我的,List但我不知道如何对Button一行中的单个做出反应。到目前为止,这是我的代码,如果我不需要大量更改它会很棒:)

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    if(arg2 == 0){                                  
        Context context = getApplicationContext();
        String text = "Toast";
        Toast meinToast = Toast.makeText( context, text, Toast.LENGTH_SHORT);
        meinToast.show();                               
    }
}
4

3 回答 3

1

在您的适配器中试试这个:

@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
    View row = convertView;
    YourWrapper wrapper = null;

    if (row == null)
    {
        row = inflater.inflate(R.layout.layout, parent, false);
        wrapper = new YourWrapper (row);
        row.setTag(wrapper);
    }
    else
        wrapper = (YourWrapper) row.getTag();

    wrapper.getButton().setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            // What you want
        }
    });

    return row;
}
于 2012-11-19T18:48:23.250 回答
0

这是一个很好的教程,如何将 ListView 与自定义适配器一起使用,

http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/

所以你可以在自定义适配器类中使用这样的功能:

public View getView(int position, View convertView, ViewGroup parent) {
        View vi=convertView;
        final Button button = (Button) vi.findViewById(R.id.button_id);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // Perform action on click
            }
        });
        return vi;
    }

如果您添加更多逻辑,您可以为列表中的每个显示按钮创建自定义事件。

于 2012-11-19T16:22:05.120 回答
0

每个按钮都需要一个OnClickListener

请阅读此内容,然后您将能够创建 OnClickListener 并将它们附加到按钮或其他对象。 http://developer.android.com/guide/topics/ui/ui-events.html

如果您不想实现OnclickListener()尝试编写时出现问题View.OnClickListener.,单击按钮时发生的操作会转到OnClick(){//foo}(将自动生成)。

然后只需使用设置 onclicklistenerbutton.setOnclickListener(yourOnclickListener);

编辑

Button mButton = ...

 mButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                //foo
            }
        });
于 2012-11-19T16:16:40.977 回答