ListView,OnItemClick没有被调用?

时间:2014-03-25 16:01:14

标签: android listview android-listfragment onitemclicklistener

我有FragmentActivity来控制ListFragment; ListFragment包含通用ListViewAdapter,并从我创建的ArrayList中提取Singleton

在我onCreateView的{​​{1}}方法中,我输入了以下代码:

ListFragment

关于为什么当我将项目添加到我的列表时他们没有反应并且没有调用OnItemClick的任何想法?

谢谢你们。

[更新]

我尝试使用public View onCreateView(LayoutInflater viewInflation, ViewGroup container, Bundle SavedInstantState) { cycleviewfragment = viewInflation.inflate( R.layout.cycleviewfragment_page, container, false); context = getActivity().getApplicationContext(); Singleton mySingleton = Singleton.getInstance(); basicList = (ListView) cycleviewfragment.findViewById(android.R.id.list); adapter = new ArrayAdapter<listControlObject>(getActivity() .getApplicationContext(), android.R.layout.simple_list_item_1, mySingleton.getA1()); this.setListAdapter(adapter); addButton = (Button) cycleviewfragment.findViewById(R.id.addbutton); addButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent myIntent = new Intent(getActivity(), listaddactivity.class); getActivity().startActivity(myIntent); } }); basicList.setOnItemClickListener(new ListView.OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { Log.d("basicListtester", "Testing onClickItem call"); Intent myIntent = new Intent(getActivity(), listdetailactivity.class); myIntent.putExtra("selectedObjectIndex",arg2); getActivity().startActivity(myIntent); } }); adapter.notifyDataSetChanged(); return cycleviewfragment; } 来实现它,但仍无效。

还尝试使用我的basicList.setAdapter(adapter);工具ListFragment并将该方法添加到课程中;这也没用。

3 个答案:

答案 0 :(得分:2)

由于您使用ListFragment,因此您不应将onItemClickListener设置为列表。您应该覆盖ListFragment中的方法。

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);

    //Do your thingy.
}

答案 1 :(得分:1)

使用

basicList.setListAdapter(adapter);

而不是

this.setListAdapter(adapter);

使用相同的ListView实例设置AdaptersetOnItemClickListener

答案 2 :(得分:1)

您应该覆盖onListItemClick,因为您的课程已扩展为ListFragment。来自doc:

  

当选择列表中的项目时,将调用此方法。   子类应该覆盖。

Here文档