2011-05-26 282 views
0

我有以下佈局檢測:按鈕的onClick不與ListView和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屬性和其他各種東西,但我無法讓它工作。我該如何解決這個問題,或者這是不允許的?

回答

0

你能告訴我們你想做什麼?爲什麼你需要ListActivity?

對不起edditing:P

你可以看看這裏:How to handle ListView click in Android

+0

我需要顯示一些數據的列表,這就是爲什麼我使用ListActivity。我用一個擴展BaseAdapter的類來填充這個列表。 – 2011-05-26 18:48:16

+0

上面的鏈接與我無關,因爲我知道如何檢測ListView上的點擊,但它是沒有檢測到onClick的Button。 – 2011-05-26 18:55:01

0

把OnClicklistener適配器本身。

+0

不幸的是這並沒有工作 - 我試圖在適配器的構造函數中放置OnClickListener,並且在getView方法中嘗試了它,但沒有運氣。 – 2011-05-26 20:02:20

0

而是然後用在佈局中的onClick東西,你有沒有嘗試過這樣的事情:

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

那麼對於buttonHeight這樣做。

+0

嗨,感謝您的建議,但是我也試過這個,也就是說,我把它放在我的ListActivity類的OnCreate中,但仍然沒有運氣。我也試着在我的ListActivity類上實現「OnClickListener」,並重寫OnClick方法,但這不起作用: – 2011-05-26 19:35:53

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... 
     } 
} 
0

設置機器人:它包含ListView的父佈局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>