2017-05-17 38 views
-2

的ListView的工作這裏是我的代碼是不工作OnItemClickListener和OnClickListener不使用BaseAdapter

我使用`AsyncTask`和數據集,以獲取來自服務器的數據`listview`使用`baseadapter`但使用` convertview.setonclicklistner`在適配器類工作,下面的代碼包含在`Fragmentclass(進口android.support.v4.app.Fragment;)`所以我認爲這是沒有問題的

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    view= inflater.inflate(R.layout.fragment_restaurants, container, false); 
    restaurant_list = (ListView)view.findViewById(R.id.restatrant_lv); 

    no_restaturants=(TextView)view.findViewById(R.id.no_restaturants); 

    // listening to single list item on click 
    restaurant_list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 

      Log.e("temp","temppppp"); 

     } 
    }); 

    //set layout slide listener 
    rowItems = new ArrayList<>(); 

    history_list = new ArrayList<HashMap<String, String>>(); 
    list_adapter = new ViewAdapter(getActivity(),rowItems); 
    restaurant_list.setAdapter(list_adapter); 
} 

,這是什麼解決方案?

回答

0
android:descendantFocusability="blocksDescendants" 

如果任何ListView控件包含可聚焦或點擊視圖然後OnItemClickListener將無法正常工作。在這種情況下,我們需要使用這個。

像這樣::

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    view= inflater.inflate(R.layout.fragment_restaurants, container, false); 
    restaurant_list = (ListView)view.findViewById(R.id.restatrant_lv); 

    no_restaturants=(TextView)view.findViewById(R.id.no_restaturants); 


    //set layout slide listener 
    rowItems = new ArrayList<>(); 

    history_list = new ArrayList<HashMap<String, String>>(); 
    list_adapter = new ViewAdapter(getActivity(),rowItems); 
    restaurant_list.setAdapter(list_adapter); 

// listening to single list item on click 
     restaurant_list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 

      Log.e("temp","temppppp"); 

     } 
    }); 
} 
+0

葉我試圖


嘗試設置適配器後設置你的setOnClickListener那也還是不行... :(@Sac – alias26

+0

你可以發佈你的.xml文件 –

+0

你有沒有在你的xml中有任何可調焦的物品? – Sac

0

ID添加到您的父母佈局custom_list_item.xml

holder.parentLayout.setOnClickListener(new OnClickItem(position)); 

private class OnClickItem implements View.OnClickListener{ 
    private int mPostion; 

    public OnClickItem(int position){ 
     mPostion = position; 
    } 
    @Override 
    public void onClick(View v) { 
     YourActivity yourActivity = (YourActivity) mContext; 
     yourActivity.onItemClicked(mPostion); 
    } 
} 
+0

它顯示「yourActivity.onItemClicked(mPostion);」中的錯誤這條線..但我已經在另一個項目中使用這樣的工作,它已經工作,但在這個項目不工作......不知道爲什麼......甚至setListViewHeightBasedOnChildren也沒有工作 – alias26

相關問題