按钮单击 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 {
我有一个使用自定义适配器扩展 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 {