按钮单击ListViewFragment

时间:2016-04-07 15:21:44

标签: android listview onclicklistener android-listfragment

我有一个扩展ListFragment的Fragment,它使用自定义适配器。

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;
} 

哪个工作正常,但是如何通知使用此适配器的片段已经点击x位置的按钮?

1 个答案:

答案 0 :(得分:2)

首先创建一个界面:

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

然后在适配器类中实例化它:

IClickListener clicListener;
    public ListAdapterConstructor(Context context, Cursor c,IClickListener listener) {
        super(context, c);
        mContext = context;
        this.clicListener = listener;
    }
在按钮的click事件上设置的getView方法中

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

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

public class YourFragment extends Fragment implements IClickListener {