1

我无法让 onItemCickListener 工作。我所做的只是使用意图打开一个片段。如果我在这里做任何可疑的事情,请告诉我?

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);
            }

           });

        }

}
4

2 回答 2

1

请注意,ListView 会阻止对包含至少一个可聚焦后代的项目的点击,但它不会使内容焦点可到达调用 setItemsCanFocus(true)。一种解决方法是禁用后代的可聚焦性,使用

android:descendantFocusability="blocksDescendants"

在定义列表项的布局中。(我自己首先从http://cyrilmottier.com/2011/11/23/listview-tips-tricks-4-add-several-clickable-areas/了解到这一点,但其他一些 SO 帖子也指出了这一点。)您的布局是否包含按钮?如果是这样,你就会陷入这种情况。

于 2014-04-15T14:35:02.493 回答
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);
    }
}
于 2012-12-11T01:20:11.090 回答