无法使onItemClickListener工作

时间:2014-08-24 21:18:31

标签: android

我在SO上尝试了各种解决方案,没有解决我的问题。吐司只是没有显示,Log.d条目也没有显示......这是我的代码:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_product_row, container, false);
    ListView listView = (ListView) v.findViewById(android.R.id.list);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Toast toast = new Toast(getActivity().getBaseContext());
            String text = "Clicked " + Integer.toString(position) + ":" + Long.toString(id);
            toast.setText(text);
            toast.setDuration(Toast.LENGTH_SHORT);
            toast.show();
            Log.d("BagIt.ItemClick", text);
        }
    });
    return v;
}

3 个答案:

答案 0 :(得分:0)

我运行了你的代码并抛出了java.lang.RuntimeException,因为Toast不是用Toast.makeText()创建的。 试试这个。

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            // TODO Auto-generated method stub
            String text = "Clicked " + position + ":" + id;
            Toast toast = Toast.makeText(getActivity(), text, Toast.LENGTH_SHORT);
            toast.show();
        }
    });

答案 1 :(得分:0)

在查看您的代码后,我注意到您的列表视图中没有任何内容。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_product_row, container, false);
    ListView listView = (ListView) v.findViewById(android.R.id.list);

    //set your array adapter here to your list view and pass the array of items

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Toast toast = new Toast(getActivity().getBaseContext());
        String text = "Clicked " + Integer.toString(position) + ":" + Long.toString(id);
        toast.setText(text);
        toast.setDuration(Toast.LENGTH_SHORT);
        toast.show();
        Log.d("BagIt.ItemClick", text);
       }
   });
   return v;
}

您可能希望先将一些项目添加到列表视图中,然后尝试单击它们。否则你将有一个空的列表视图。

我会使用数组适配器或相应的适配器,具体取决于您要在列表视图中显示的数据类型。

答案 2 :(得分:0)

您可以发布适配器代码和listview项目布局吗?

列表视图中有一些项目(如复选框)可能会抓住焦点而不是整个行布局。

此外,您的代码不会显示正在创建的listview适配器,甚至不会设置为listview以实际填充。

如果您可以发布这些课程,我们可以提供更多帮助