我无法让onItemClickListener工作。我所做的只是使用意图打开一个片段。如果我在这里做任何可疑的事,请告诉我吗?
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);
}
});
}
}
答案 0 :(得分:1)
请注意,ListView会阻止包含至少一个焦点的项目的点击次数 后代,但它不会使内容焦点可达调用 setItemsCanFocus(真)。一种解决方法是使用
禁用后代的可聚焦性android:descendantFocusability="blocksDescendants"
在定义列表项的布局中。 (首先从http://cyrilmottier.com/2011/11/23/listview-tips-tricks-4-add-several-clickable-areas/了解到这一点,但其他一些SO帖子也指出了这一点。)你的布局是否包含按钮?如果是这样,你就属于这种情况。
答案 1 :(得分: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);
}
}