2012-12-11 73 views
1

我無法讓onItemCickListener工作。我正在做的是用意圖打開一個片段。請讓我知道我是否在這裏做任何可疑的事情?setOnItemClickListener not working

public class MyListFragment extends ListFragment { 

    private ArrayList<String> myList = null; 
    private ArrayAdapter<String> myAdapter; 

     @Override 
     public void onActivityCreated(Bundle savedInstanceState){ 
      Log.d("Example:", "In Fragement Calss"); 
      super.onActivityCreated(savedInstanceState); 

      Resources myResources = getResources(); 
      myList = new ArrayList<String>(Arrays.asList(myResources.getStringArray(R.array.myExamArray))); 
      myAdapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,myList); 
      setListAdapter(myAdapter); 

      ListView lv = (ListView) getActivity().findViewById(R.id.listView); 
      lv.setOnItemClickListener(new OnItemClickListener(){ 

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

       Intent myIntent = new Intent(view.getContext(), DetailsFragment.class); 

       startActivity(myIntent); 
      } 

      }); 

     } 

} 
+0

其實我是新來的這個..不知道這裏的系統是如何工作的。我會繼續接受答覆。 –

回答

0

我看不到你在哪裏爲這個片段膨脹一個特定的XML ......但是你可能引用了錯誤的ListView。

無論你應該使用現有的onListItemClick方法:

public class MyListFragment extends ListFragment { 

    private ArrayList<String> myList = null; 
    private ArrayAdapter<String> myAdapter; 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState){ 
     // Remove the OnItemClickListener, but keep everything else 
    } 

    @Override 
    public void onListItemClick (ListView l, View v, int position, long id) { 
     Intent myIntent = new Intent(this, DetailsFragment.class); 
     startActivity(myIntent); 
    } 
} 
+0

替換此行代碼 ListView lv =(ListView)getActivity()。findViewById(R.id.listView); with ListView lv = getListView(); 觸發了該事件,並能夠調用我的其他活動,因爲此片段擴展了listfragment。 –

+0

我雖然可以工作,但對我來說,使用'onListItemClick'回調比使用'setOnItemClickListener()'創建一個_second_監聽器更有意義。 – Sam

1

需要注意的是包含至少一個可聚焦 後代項目的ListView的塊點擊,但它不會使調用 內容對焦可達setItemsCanFocus(真)。一個解決辦法是通過禁用後裔的可聚焦性,在佈局定義你的列表項使用

android:descendantFocusability="blocksDescendants" 

。 (首先從http://cyrilmottier.com/2011/11/23/listview-tips-tricks-4-add-several-clickable-areas/中瞭解到這一點,但其他一些SO帖也指出了這一點。)您的佈局是否包含按鈕?如果是這樣,你會陷入這種情況。