2011-10-19 161 views
1

我有一個ListView的問題,只有當我向下滾動才能看到我的列表項。當滾動列表視圖列表項不可點擊

這裏是我的主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"> 
<LinearLayout 
    android:id="@+id/AddAlarm" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:clickable="true" 
    android:layout_margin="10dp" > 
<ImageView 
    android:src="@drawable/add" 
    android:gravity="right" 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:layout_marginRight="0dp"/>    
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="20dp" 
    android:gravity="left" 
    android:textSize="25dp" 
    android:text="@string/add_alarm" /> 
</LinearLayout>  
<ListView 
    android:id="@+id/ListaAlarmas" 
    android:scrollbars="vertical" 
    android:focusable="false" android:clickable="false" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 
</LinearLayout> 

這是我在上面的ListView加載行項目的xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="horizontal" > 
<ToggleButton 
    android:id="@+id/CheckBox" 
    android:textOn="" 
    android:textOff="" 
    android:focusableInTouchMode="false" 
    android:focusable="false" 
    android:layout_gravity="center" 
    android:background="@drawable/clock_off" 
    android:layout_margin="10dp" 
    android:layout_height="45dp" 
    android:layout_width="45dp" /> 
<View 
    android:id="@+id/firstDivider" 
    android:layout_height="fill_parent" 
    android:focusableInTouchMode="false" 
    android:focusable="false" 
    android:layout_width="2dp" 
    android:background="#999999" />  
<LinearLayout 
    android:orientation="vertical" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:layout_gravity="center_vertical" 
    android:focusableInTouchMode="false" 
    android:focusable="false" 
    android:layout_weight="3" 
    android:layout_marginLeft="30dp" > 
    <TextView 
     android:id="@+id/TextoHora" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="25dp"/> 
    <TextView 
     android:id="@+id/TextoRepetir" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
</LinearLayout>  

第一的LinearLayout是可點擊(AddAlarm)它只是將另一個項目添加到ListView。 ListView中的每個項目都由一個ToggleButton和2個TextViews組成。起初切換按鈕無法點擊,但我解決了通過添加:

android:focusableInTouchMode="false" 
android:focusable="false" 

所以,一切正常,直到有列表這麼多項目,我需要向下滾動查看它們。事實上,它可以正常工作,直到我實際向下滾動。 即使在ListView中有更多項目時它也能正常工作,但我不向下滾動以查看它們。

問題是當滾動時,ListView上的項目不再可點擊。它不會使用setOnItemClickListener方法,甚至不會獲得焦點(橙色背景)。

任何人都可以弄清楚是什麼問題?

回答

0

這可能會解決您的問題,也可能不是答案。 您可以在自定義適配器中嘗試此操作 這將禁用焦點(橙色突出顯示)。

public CustomAdapterView(Context context,YourModel data) 
{ 
    super(context); 
    setOnClickListener((OnClickListener) context); 
    setClickable(true); 
    setFocusable(false); 
} 

如果使用notifyDataSetChanged更新ListView它將無法正確使用CustomAdapter。請參閱this的帖子。

+0

mahe madhi,謝謝你的回答。只是一個問題,是不是你的例子,就像我在xml文件中設置trueable和false可點擊和焦點?我試過了,但沒有奏效。 我認爲這不是notifyDataSetChanged的問題,因爲它工作正常,直到我移動滾動。不管怎樣,非常感謝。 – sheldoncooper

0

你需要設置listview的xml如下: android:descendantFocusability =「blocksDescendants」 然後你可以點擊。這是因爲切換按鈕存在於您的列表項中。