2011-09-06 129 views
5

我想将按钮添加到我的列表视图的每一行。我在我的布局文件夹中创建了一个名为row.xml的XML文件,并在该文件中添加了两个文字浏览和一个按钮。但是当添加一个按钮时,我无法点击列表视图的项目。我只能点击按钮。这里是row.xml将按钮添加到列表视图中的每一行

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 


    <TextView 
     android:id="@+id/text11" 

     android:layout_alignParentLeft="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
    android:textSize="25sp" 
    android:textColor="#000000" 
     /> 
      <TextView 
     android:id="@+id/text2" 

     android:layout_alignParentLeft="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
    android:textSize="10sp" 
    android:textColor="#000000" 
     /> 
      <Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> 
</LinearLayout> 

我想在我的活动中引用textviews和按钮。请帮助我并提出一些建议。

回答

1
+0

感谢朋友。我知道了。但我如何通过它们的id找到按钮,因为它们在row.xml中,而我的主布局文件是不同的。请帮助 – hussain

+0

@hussain:看看我编辑的答案。 – user370305

+0

button =(Button)view.findViewById(R.id.btn);这里的view是你膨胀之后的你的rw.xml文件的视图。 – user370305

0

请查看此链接...

http://commonsware.com/Android/excerpt.pdf

在该PDF在第104页,他在列表视图的每一行添加了一个图像。您用按钮替换它。

希望这可以解决您的问题。

+0

第104页?没有页面104以页153开头 – cc4re

+0

检查页面175开始。 –

1

您可以使用自定义适配器(扩展数组适配器非常简单)。在getView方法中,在您的TextView上设置onClickListener,这样您的按钮和ListItem的其他部分都会响应触摸。

1

如果你想尝试新的东西的问题检查LINK

希望这将是有益的。

8

我有一个类似的问题。简单的诀窍是将android:focusable="false"添加到您的按钮。

+0

谢谢。我终于找到了适合我的解决方案!我特别的列表视图行中有两个按钮,一个在左边,一个在右边。这两个按钮都起作用,但是当我点击该行的其他任何地方时,它并没有调用onItemSelected回调。 – hellaandrew

+0

不知道为什么,但没有为我工作 – fnc12

1

您必须添加可聚焦=“假”,你可以

<Button 
     android:id="@+id/bt_do" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     **android:focusable="false"** /> 
在适配器

public class MyAdapter extends BaseAdapter { 
    private Context context; 
    private List<Objet> objects; 
    private OnClickListener listener; 

    public MyAdapter(Context context, List<Objet> objects, 
      OnClickListener listener) { 
     this.context = context; 
     this.objects = objects; 
     this.listener = listener; 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
      LayoutInflater infalInflater = ((Activity) context) 
        .getLayoutInflater(); 
      convertView = infalInflater.inflate(R.layout.my_line_list, null); 
     } 
     Button bt_do=(Button)convertView.findViewById(R.id.bt_do); 
     bt_do.setOnClickListener(listener); 
     return convertView; 

    } 

    @Override 
    public boolean hasStableIds() { 
     return true; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return objects.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return objects.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

} 

,并在您的活动

创建联合国适配器和落实按钮的监听器。

相关问题