按钮单击 ListView 片段

Button Click for ListViewFragment

我有一个使用自定义适配器扩展 ListFragment 的片段。

ListView 的每一行都有一个 Button 我知道在 Adapter

getView 方法我可以为按钮设置一个侦听器,如下所示:

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

    ViewHolder viewHolder; //View lookup cached stored in tag.
    if(convertView == null){
        viewHolder = new ViewHolder();
        LayoutInflater inflater = LayoutInflater.from(getContext());
        convertView = inflater.inflate(R.layout.pay_debit_credit_item, parent, false);
        viewHolder.makePayment = (Button) convertView.findViewById(R.id.paymentButton);
        viewHolder.makePayment.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getContext(), "Hellooo", Toast.LENGTH_SHORT).show();
            }
        });
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }

    //...
    //Return view to be rendered.
    return convertView;
} 

哪个工作正常,但是我如何通知正在使用此适配器的 Fragment 位置 x 的按钮已被单击?

首先创建一个接口:

public interface IClickListener {
    public void clicked(View view,int position);
}

然后在你的适配器中实例化它class:

IClickListener clicListener;
    public ListAdapterConstructor(Context context, Cursor c,IClickListener listener) {
        super(context, c);
        mContext = context;
        this.clicListener = listener;
    }

在 getView 方法中为按钮设置点击事件:

viewHolder.button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                clicListener.clicked(v,po);
                }
        });

并且至少更改您的片段以实现事件侦听器:

public class YourFragment extends Fragment implements IClickListener {