Android SETONITEMCLICK侦听器不工作
我无法让McIcklistener工作。我所做的就是用意图打开一个片段。如果我在这里做什么可疑的事,请务必告诉我Android SETONITEMCLICK侦听器不工作,android,onclick,Android,Onclick,我无法让McIcklistener工作。我所做的就是用意图打开一个片段。如果我在这里做什么可疑的事,请务必告诉我 public class MyListFragment extends ListFragment { private ArrayList<String> myList = null; private ArrayAdapter<String> myAdapter; @Override public void o
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);
}
});
}
}
公共类MyListFragment扩展ListFragment{
private ArrayList myList=null;
专用阵列适配器myAdapter;
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
Log.d(“例如:,”在Fragement Cals中”);
super.onActivityCreated(savedInstanceState);
Resources myResources=getResources();
myList=newarraylist(Arrays.asList(myResources.getStringArray(R.array.myExamArray));
myAdapter=newArrayAdapter(getActivity(),android.R.layout.simple\u list\u item\u 1,myList);
setListAdapter(myAdapter);
ListView lv=(ListView)getActivity().findViewById(R.id.ListView);
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
Intent myIntent=newintent(view.getContext(),DetailsFragment.class);
星触觉(myIntent);
}
});
}
}
我看不出您在哪里为这个片段膨胀特定的XML。。。但您可能引用了错误的ListView
不管怎样,您都应该使用现有的方法:
公共类MyListFragment扩展ListFragment{
private ArrayList myList=null;
专用阵列适配器myAdapter;
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
//删除侦听器,但保留所有其他内容
}
@凌驾
public void onListItemClick(列表视图l、视图v、整数位置、长id){
Intent myIntent=新的Intent(this,DetailsFragment.class);
星触觉(myIntent);
}
}
我看不出您在哪里为这个片段膨胀特定的XML。。。但您可能引用了错误的ListView
不管怎样,您都应该使用现有的方法:
公共类MyListFragment扩展ListFragment{
private ArrayList myList=null;
专用阵列适配器myAdapter;
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
//删除侦听器,但保留所有其他内容
}
@凌驾
public void onListItemClick(列表视图l、视图v、整数位置、长id){
Intent myIntent=新的Intent(this,DetailsFragment.class);
星触觉(myIntent);
}
}
请注意,ListView会阻止对至少包含一个可聚焦项的项目的单击
但它不会使调用内容焦点可访问
setItemsCanFocus(true)。一种解决方法是使用
android:descendantFocusability="blocksDescendants"
在定义列表项的布局中。(我第一次从自己那里了解到这一点,但其他一些SO帖子也指出了这一点。)您的布局是否包含按钮?如果是这样的话,您就会陷入这种情况。请注意,ListView会阻止对至少包含一个可聚焦项的项目的单击 但它不会使调用内容焦点可访问 setItemsCanFocus(true)。一种解决方法是使用
android:descendantFocusability="blocksDescendants"
在定义列表项的布局中。(我第一次从自己那里了解到这一点,但其他一些SO帖子也指出了这一点。)您的布局是否包含按钮?如果是这样的话,你就会陷入这种情况。事实上,我对这种情况还不熟悉。。我不知道这里的系统是如何工作的。我会接受答复的。事实上,我对这一点还不熟悉。。我不知道这里的系统是如何工作的。我将继续并接受响应;具有ListView lv=getListView();触发了事件,并能够调用我的其他活动,因为此片段正在扩展listfragment。我认为这可能会起作用,但对我来说,使用
onListItemClick
回调比使用setOnItemClickListener()
创建第二个侦听器更有意义。替换这行代码ListView lv=(ListView)getActivity().findViewById(R.id.listView);具有ListView lv=getListView();触发了事件,并能够调用我的其他活动,因为此片段正在扩展listfragment。我认为这可能会起作用,但对我来说,使用onListItemClick
回调比使用setOnItemClickListener()
创建第二个侦听器更有意义。