使用ListView和ListActivity未检测到按钮onClick

时间:2011-05-26 18:39:23

标签: android listview button onclick listactivity

我有以下布局:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent" 
 android:layout_height="fill_parent">
 <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <Button android:text="Height" 
        android:layout_height="wrap_content" 
        android:id="@+id/buttonHeight" 
        android:layout_width="wrap_content"
        android:layout_weight="15"
        android:onClick="OnClickHeight">
    </Button>
    <Button 
        android:text="Width" 
        android:layout_height="wrap_content" 
        android:id="@+id/buttonWidth" 
        android:layout_width="wrap_content"
        android:layout_toRightOf="@id/buttonHeight"
        android:layout_weight="1"
        android:onClick="onClickWidth">
   </Button>
 </LinearLayout>
 <ListView android:id="@android:id/list"
 android:layout_width="fill_parent" 
 android:layout_height="fill_parent"
 android:dividerHeight="1px"
 android:drawSelectorOnTop="false"/>
 </RelativeLayout>

然后我有一个扩展ListActivity的类,其中我有onClickWidth和onClickHeight方法,例如:

 public void onClickWidth(View v) 
 {
   // does stuff
 }

但是,这些onClick事件尚未处理。如果我更改类以扩展Activity而不是ListActivity,并从我的布局中删除ListView,那么然后就会检测到它!

我试过设置android:clickable =“true”,玩了android:focusable属性,以及其他各种各样的东西,但我无法让它工作。我该如何解决这个问题,或者这是不允许的?

5 个答案:

答案 0 :(得分:0)

你能告诉我们你想做什么吗?你为什么需要ListActivity?

对不起edditing:P

你可以看看这里:How to handle ListView click in Android

答案 1 :(得分:0)

将OnClicklistener放在适配器本身内。

答案 2 :(得分:0)

而不是在布局中使用onClick的东西,你尝试过这样的事情:

Button buttonWidth = (Button)findViewById(R.id.buttonWidth);
buttonWidth.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        //do stuff
    }
});

然后对buttonHeight执行相同操作。

答案 3 :(得分:0)

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_land);

            Button btn = (Button) findViewbyid(R.id.buttonWidth);

            btn.setOnClickListener(this);
}
public void onClickWidth(View v) 
{
      if(v == btn){
            //your code...
      }
}

答案 4 :(得分:0)

将包含ListView的父布局的 android:descendantFocusability 属性设置为值 blocksDescendants ,如:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" 
android:descendantFocusability="blocksDescendants"> ...</LinearLayout>