Android:如何在ListView的List项中设置Button的onClick事件
我是Android初学者。 我想添加列表视图项目中使用的button的onClick事件。 我怎样才能给列表项中的buttononClick事件。
您可以在自定义适配器的getView
方法中设置onClick
事件。
检查链接http://androidforbeginners.blogspot.it/2010/03/clicking-buttons-in-listview-row.html
在适配器类
public View getView(final int position, View convertView, ViewGroup parent) { LayoutInflater inflater = getLayoutInflater(); View row = inflater.inflate(R.layout.vehicals_details_row, parent, false); Button deleteImageView = (Button) row.findViewById(R.id.DeleteImageView); deleteImageView.setOnClickListener(new OnClickListener() { public void onClick(View v) { //... } }); }
但你可以得到一个问题 – listView行不可点击 。 解:
- 使ListView可调焦
android:focusable="true"
- button不可聚焦
android:focusable="false"
尝试这个,
public View getView(final int position, View convertView,ViewGroup parent) { if(convertView == null) { LayoutInflater inflater = getLayoutInflater(); convertView = (LinearLayout)inflater.inflate(R.layout.YOUR_LAYOUT, null); } Button Button1= (Button) convertView .findViewById(R.id.BUTTON1_ID); Button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // Your code that you want to execute on this button click } }); return convertView ; }
它可能会帮助你…
在你的自定义适配器里面的getView方法:
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Do things Here } });
我假设你已经为你的ListView定义了自定义的适配器。
如果是这种情况,那么您可以在自定义适配器的getView()
方法内为onClickListener
分配button。
这已在许多post中讨论过,但我仍然无法找出解决scheme:
android:focusable="false" android:focusableInTouchMode="false" android:focusableInTouchMode="false"
下面的解决scheme将与任何ui组件工作:button,ImageButtons,ImageView,Textview。 LinearLayout,RelativeLayout在一个listview单元格内点击,也会响应onItemClick:
适配器类 – getview():
@Override public View getView(int position, View convertView, ViewGroup parent) { View view = convertView; if (view == null) { view = lInflater.inflate(R.layout.my_ref_row, parent, false); } final Organization currentOrg = organizationlist.get(position).getOrganization(); TextView name = (TextView) view.findViewById(R.id.name); Button btn = (Button) view.findViewById(R.id.btn_check); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { context.doSelection(currentOrg); } }); if(currentOrg.isSelected()){ btn.setBackgroundResource(R.drawable.sub_search_tick); }else{ btn.setBackgroundResource(R.drawable.sub_search_tick_box); } }
在这是你可以得到button点击对象的活动。 (特别是当你想要button作为一个checkboxselect和非select状态):
public void doSelection(Organization currentOrg) { Log.e("Btn clicked ", currentOrg.getOrgName()); if (currentOrg.isSelected() == false) { currentOrg.setSelected(true); } else { currentOrg.setSelected(false); } adapter.notifyDataSetChanged(); }
在getview方法把听众外面检查view..try跟着这个..它在我的情况工作.. 如何增加或减lesslistview的每一行中的edittext的值?