2012-07-23 41 views
28

我使用ListActivity實現了android listview。在這裏我遇到這樣的問題,當我點擊列表項時,當Flash顏色也不是橙色時,不執行任何操作。所以你對我的問題有什麼想法。點擊不能在Listitem列表中查看android

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) 
{ 
    super.onListItemClick(l, v, position, id); 
    Toast.makeText(getApplicationContext(), "msg msg", Toast.LENGTH_SHORT) 
      .show(); 

} 

我把這段代碼也放到Main ListActivity中。

+2

你可以發佈你的代碼,plz – Nermeen 2012-07-23 09:43:26

+0

和你的列表適配器代碼 – rajpara 2012-07-23 09:44:41

+1

你的列表中是否有任何按鈕或ImageButton? – 2012-07-23 09:46:31

回答

107

你有什麼在這裏要注意的第一件事情,只要有喜歡的按鈕點擊元素或ImageButtons出現在你的ListView元素,他們採取點擊的控制事件。所以你的ListView將不會有機會接受點擊事件。

您只需將focusable屬性設置爲false,即您在ListView中使用的ButtonImageButton。但他們仍然可以毫無問題地工作,而且你的ListView的onListItemClick也可以工作。

試試這個,

 <Button android:id="@+id/textsize_increaser" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@+id/back_button" 
     android:focusable="false" 
     android:text=" A + "/> 

在這裏,我已經加入此android:focusable="false"並能正常工作。嘗試一下。

+2

如果您只聽點擊項目,您還應該添加'clickable = false' – mente 2013-12-12 08:43:30

+0

請幫助我。我在過去的7個小時裏一直堅持這個,這是一個很簡單的問題。 http://stackoverflow.com/questions/35108940/why-cant-i-remove-an-item/35109304#35109304 – 2016-01-31 03:09:07

+1

對我來說,'imageButton.setFocusable(false)'和'imageButton.setFocusableInTouchMode(false)**在適配器**幫助。在XML中沒有效果! – user2878850 2017-10-06 20:13:38

9

你有ListView控件的選擇模式設爲單:

 listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 

如果你有列表中的項目的任何可點擊的ImageView或TextView的或按鈕,然後讓他們不可作爲焦點(在你的適配器類):

 yourButton.setFocusable(false); 
     yourButton.setFocusableInTouchMode(false); 
+0

請幫幫我。我在過去的7個小時裏一直堅持這個,這是一個很簡單的問題。 http://stackoverflow.com/questions/35108940/why-cant-i-remove-an-item/35109304#35109304 – 2016-01-31 03:09:11

4

您是否使用自定義適配器?並用按鈕或任何視圖消除列表視圖聚焦佈局作爲孩子聚焦,那麼它不會工作明顯。請確保設置爲

android:focusable="false" 

這樣的視圖在xml文件中。希望這對你有用。

+0

請幫助我。我在過去的7個小時裏一直堅持這個,這是一個很簡單的問題。 http://stackoverflow.com/questions/35108940/why-cant-i-remove-an-item/35109304#35109304 – 2016-01-31 03:09:36

4

設置這在您的listactivity Java文件

listview1.setFocusable(false); 
1

Eclipse建議我將textIsSelectable="true"添加到用於列表視圖的佈局xml中的T​​extViews中。

那麼,如果你想點擊列表中的項目,那麼你不應該添加這些標籤。

0

參考這篇文章的解決方案:

Click is not working on the Listitem Listview android

View v = parent.getChildAt(position); 
parent.requestChildFocus(v,view); 
v.setBackground(res.getDrawable(R.drawable."Some drawable for clicked row")); 

int count = parent.getChildCount(); 
for(int i=0; i<count; i++) 
{ 
    if(i!=position) 
    { 
    v = parent.getChildAt(i); 
    v.setBackground(res.getDrawable(R.drawable."some drawable for not clicked row)); 
    } 
} 
0
listview.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View v, int pos, 
        long id) { 
       Toast.makeText(v.getContext(), exm.get(pos).getDefinition(), 
         Toast.LENGTH_SHORT).show(); 


      } 
     }); 
0

居然還有意味着,爲了防止孩子的意見,從獲得焦點的參數,只需要添加父以下佈局:

android:descendantFocusability="blocksDescendants" 

正如文檔解釋:

ViewGroup將阻止其後代接收焦點。

0

確保你

  1. 不使用與列表視圖滾動查看
  2. 不使用滾動查看您的行項目佈局列表視圖

如果滾動查看存在在上述任何地方刪除它

0

listItemButton.setFocusable(false); listItemButton.setFocusableInTouchMode(false);

將上述設置在您的適配器中。它不工作在xml