2017-05-17 42 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

相关问题