[英]How to set click listener for button in listview in Fragment onCreateView()
[英]Button Click Listener On ListView in a Fragment
所以我试图用 onClickListener 添加一个 Button 一些功能,但我似乎无法让它工作。
我的按钮是在列表项的 XML 中声明的,我的列表是在一个 Fragment 中实现的。
我做了一些研究以找到一些答案,我尝试过的每个解决方案要么失败,要么太复杂。 我有点开始为我的无知感到抱歉。
在您的 adpater 类中通过 id 找到按钮,然后在同一个类中写入 button.setOnClickListner。 它会工作
如果您甚至在您的框架类中也想要点击,您必须在适配器类中编写接口并通过该接口扩展您的片段,然后使用接口方法进行点击
如果您需要单击带有索引/位置的片段类,请使用 belo 示例代码
//Inside adpater class
public interface OnEditLocationListener {
public void onDeleteClick(int position);
}
private OnEditLocationListener listener;
public void setOnEditLocationListener(OnEditLocationListener listener) {
this.listener = listener;
}
//Inside getView method
holder.imv_delete.setTag(position);
holder.imv_delete.setOnClickListener(null);
holder.imv_delete.setOnClickListener(new OnClickListener() {
@Override
public void onDeleteClick(View view) {
if (listener != null) {
listener.onDeleteClick(position);
}
}
});
//In Activity
yourclass extends yourchoice implements adapter.OnEditLocationListener
//inside onCreate/onCreateview
adapter.setOnClickListener(getActivity/this);
//Button click
@Override
public void onDeleteClick(int pos) {
Toast.makeText(getActivity(), "clicked @ " + pos, Toast.LENGTH_SHORT).show();
}
您好)首先,您必须创建自定义适配器。 例如 :
public class EatListAdapter extends BaseAdapter {
private ArrayList<EatTime> eatTimes;
private Activity activity;
public EatListAdapter(Activity activity, ArrayList<EatTime> items) {
this.eatTimes = items;
this.activity = activity;
}
@Override
public int getCount() {
return eatTimes.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v;
LayoutInflater inflater = (LayoutInflater) activity.getApplicationContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.list_item, null);
Button delete = (Button) v.findViewById(R.id.button_delete);
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//your ON CLICK CODE
});
return v;
}
}
比设置适配器
ListView eatingList = (ListView) findViewById(R.id.eatingList);
adapter = new EatListAdapter(this, eatArrayList);
eatingList.setAdapter(adapter);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.