2012-06-23 197 views
3

在Listview的適配器類中,我爲每個列表項添加了setOnClickListener事件。但是,只要我們點擊列表項目,項目不會突出顯示。 如果我刪除setOnClickListener事件,我就能很容易地看到列表項選擇.. 請告訴我,如何解決這個問題Android Listview項目選擇

在listAdapter的getview如果我加入這部分,ListView項選擇顏色會不來

holder.ContactNumber.setText(fitems.get(position).getContactName()); 

       convertView.setOnClickListener(new OnClickListener() { 

        public void onClick(View v) { 


         // TODO Auto-generated method stub 

         setSelectedItem(i); 
         Intent intent = 
           new Intent(context, preview_screen.class); 

         context.startActivity(intent); 
        } 
       }); 
+0

這裏添加相應的代碼,請。 – Sajmon

+0

@ hawaii.five-0,我已添加代碼 – Naruto

回答

5

在RE /可繪製文件夾列表視圖項row_selector.xml創建一個選擇這個選擇對你listview_item.xml 添加爲背景這是機器人,你可以創建一個自定義使用的默認選擇之一:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/button_pressed_yellow" 
      android:state_pressed="true" /> 
    <item android:drawable="@drawable/button_focused_orange" 
      android:state_focused="true" /> 
    <item android:drawable="@drawable/button_normal_green" /> 
</selector> 

使用OnItemClickListener()回調來處理點擊列表視圖項目

listView.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 

       Toast.makeText(getApplicationContext(), 
       ""+position, Toast.LENGTH_SHORT).show(); 
      } 
     }); 
+0

感謝您的回覆。我的疑問是,如果我在適配器類中添加SetonClickListner事件,我可以選擇項目,但默認選擇顏色不會來..爲什麼? – Naruto

+0

@LLL如果你想獲得默認的selctor顏色,你必須使用setOnItemClickListener! –

+0

謝謝,我沒有得到你的評論...如果我添加setOnItemClickListener,我不會得到默認選擇器,克服我應該做什麼? – Naruto

1

您必須設置與xml文件行背景...

See this Example

drawable-> bg_row.x毫升

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="@color/white" android:state_pressed="false" android:state_selected="false"/> 
    <item android:drawable="@color/blue" android:state_pressed="true" android:state_selected="false"/> 
    <item android:drawable="@color/blue" android:state_pressed="true" android:state_selected="true"/> 

</selector> 
+0

的摘錄感謝您的回覆。我的疑問是,如果我在適配器類中添加SetonClickListner事件,我可以選擇項目,但默認選擇顏色不會來..爲什麼? – Naruto

0

的想法事件給convertView onClickListener不是ListView的工作方式。 不要設置此偵聽器。相反,設置一個onItemClickListener或一個onItemSelectListener(取決於你想做什麼)到列表視圖並將代碼放在那裏。

+0

這兩個事件都不可用Convertview obj – Naruto

+0

我明白,謝謝你的幫助... – Naruto

+0

不客氣:) – Carni

1
// ListView Item Click Listener 
      listView.setOnItemClickListener(new OnItemClickListener() { 

        @Override 
        public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 

        // ListView Clicked item index 
        int itemPosition  = position; 

        // ListView Clicked item value 
        String itemValue = (String) listView.getItemAtPosition(position); 

        // Show Alert 
        Toast.makeText(getApplicationContext(), 
         "Position :"+itemPosition+" ListItem : " +itemValue , Toast.LENGTH_LONG) 
         .show(); 

        } 

      }); 

在列表視圖聽者您使用example