2013-06-04 61 views
5

請參閱此影像https://www.dropbox.com/s/6zoj9lw10oc07xa/to_dropbox.pngAdapterView.OnItemClickListener()是不是在我customAdapter工作

what i am doing : 我創建一個list_view,在我加入自定義適配器。

what i am using : 我使用的是listView,customAdapter,menuitem。 listView:在整個應用程序的單一列表視圖 customadapters:3自定義適配器 menuitem:1

How i am implementing : 我有東西被正確地獲取數據的基礎上,並從該數據庫中,我已經在我的列表視圖中輸入這些值過濾3種類型的數據: 第一個adapter_type默認情況下進入(在onCreate中)。

adapter = new Adapter_forCompletedReminder(array_today_title , this) ; 
ls.setAdapter(adapter) ; 

第2個adapter_type是通過按menuitem進入我的listview。

adapter = new Adapter_forCompletedReminder(array_past_2_day_title , this) ; 
ls.setAdapter(adapter) ; 

第3個adapter_type是通過按menuitem進入我的listview。

adapter = new Adapter_forCompletedReminder(array_other_day_title , this) ; 
ls.setAdapter(adapter) ; 

what is my problem : 此代碼內onCreate()方法加入。

ls.setOnItemClickListener(new AdapterView.OnItemClickListener() 
{ 
    public void onItemClick(AdapterView<?> adapterView , View view , int position ,long arg3) 
    { 
     Log.i("Item clicked","tushar:itemclicked") ; 
    } 
}); 

當我試圖實現AdapterView.OnItemClickListener(),它是不工作... 代碼沒有崩潰(日誌目錄號紅線)。 代碼不在執行中llist_view_element的點擊

感謝您閱讀我的問題。

+0

也許您的意見截取觸摸事件。嘗試將onClick動作添加到適配器getView()方法中的convertView中。 –

+0

你能提供Adapter_forCompletedReminder代碼嗎? –

+0

我的adapter_file_is:https://www.dropbox.com/s/ij13ibz3aeqhatz/Adapter_forCompletedReminder.java –

回答

10

您使用customview_completedxml_listview.xml中的複選框,這就是爲什麼onItemClick偵聽器不工作的原因。如果在複選框中設置clickable =「false」,則onItemclick監聽器將工作。

如果您希望該複選框仍然有效,那麼您必須在自定義適配器類中設置onclicklistener事件。

//我編輯getView

@Override 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
    LayoutInflater inflater = LayoutInflater.from(ob) ; 
    View v = inflater.inflate(R.layout.customview_completedxml_listview, null) ; 


    TextView txt = (TextView) v.findViewById(R.id.txt_fordisplayingdata) ; 
     txt.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      Toast.makeText(ob, "Hello", Toast.LENGTH_SHORT).show(); 

     } 
    }); 
     txt.setText(recieved_Array[position]) ; 

     return v ; 
    } 

/////////////////////// //解決方法二設置機器人:可調焦=」假「在複選框

 <?xml version="1.0" encoding="utf-8"?> 
     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:orientation="horizontal" 
     > 

    <TextView 
    android:id="@+id/txt_fordisplayingdata" 
    android:layout_width="240dp" 
    android:text="display data" 
    android:layout_height="wrap_content" 
    android:layout_centerVertical="true" 
    android:layout_marginLeft="10dp" 
    /> 

    <TextView 
    android:id="@+id/txt_fordisplayingLargerdata" 
    android:layout_width="240dp" 
    android:text="display data larger bahut larger " 
    android:layout_height="wrap_content" 
    android:layout_centerVertical="true" 
    android:layout_marginLeft="10dp" 
    android:visibility="gone" 
    /> 

    <View 
    android:layout_width="2dp" 
    android:layout_toRightOf="@id/txt_fordisplayingdata" 
    android:layout_height="15dp" 
    android:layout_marginLeft="15dp" 
    android:layout_centerVertical="true" 
    android:id="@+id/view_forcompletedtask" 
    /> 


    <CheckBox 
    android:layout_toRightOf="@id/view_forcompletedtask" 
    android:id="@+id/checkbox_tocomplete" 
    android:layout_marginLeft="15dp" 
    android:layout_width="wrap_content" 
    android:focusable="false" 
    android:layout_height="wrap_content" 
    android:layout_centerVertical="true" 
    /> 

</RelativeLayout> 
+0

你好Tushar Pandey我希望它能工作我提供兩個解決方案兩個將工作選擇根據您的實施 –

+0

謝謝,爲您的親切幫助! –

+0

你救了我。謝謝! –

8

這裏有一些東西,你可以嘗試: -

  1. 如果有任何按鈕(或複選框),或在您的列表視圖項負責處理,然後單擊事件的每個元素做任何元素: -

    android:focusable = "false" 
    android:focusableInTouchMode = "false" 
    
  2. 嘗試設置此

    list.setItemsCanFocus(false); 
    
  3. 覆蓋的onItemClic K()方法

    ls.setOnItemClickListener(new AdapterView.OnItemClickListener() 
    { 
    @Override 
    public void onItemClick(AdapterView<?> adapterView , View view , int position ,long arg3) 
    { 
        Log.i("Item clicked","tushar:itemclicked") ; 
    } 
    }); 
    
+0

謝謝,nr.1爲我工作,其他帖子的答案建議'android:clickable =「false」'可以獨自完成,但不適合我。'可調焦的工作完美。也許模擬器之間有區別和開發這裏的冰.. – Sti

1

我真的不能說你究竟是什麼問題,但我寫了很簡單的例子給你。嘗試一下,如果它能夠工作 - 只需將你當前的項目移植到我的示例項目中即可。 https://docs.google.com/file/d/0Bz4Xd7Ju_kbYbVlyd1dvYTJZYTg/edit?usp=sharingalways

P.S:我建議你閱讀有關「在Android最佳實踐」,當你完成你的想法(約ViewHolder模式)。

+0

我會的,但它是一個很長的..項目裏面有6-7個部分。 –

+0

嘗試在getView()方法中添加onClickListener到你的視圖(在返回v之前)這個Answer是Rock中的方法。 –

+0

只是打開項目並測試是否有效。之後,您可以將您的項目與此示例進行比較,並且可能會發現錯誤「爲什麼onClick不起作用」。 onClickListener用於在項目中不需要getView()中的視圖,因爲您擁有簡單的列表邏輯。好像你在xml佈局中有多餘的屬性。 –