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的值?