Android 如何使用片段将onclick事件添加到listview中
我在尝试将SetonicClickListener添加到片段中时遇到问题Android 如何使用片段将onclick事件添加到listview中,android,android-fragments,android-listview,onclicklistener,Android,Android Fragments,Android Listview,Onclicklistener,我在尝试将SetonicClickListener添加到片段中时遇到问题 public class LocalesFragmento extends Fragment { ListView locales_list; private List localesList; private Context context; public LocalesFragmento() { } @Override public View onCreateView(LayoutInflater inflat
public class LocalesFragmento extends Fragment {
ListView locales_list;
private List localesList;
private Context context;
public LocalesFragmento() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View vista = inflater.inflate(R.layout.locales_list, container, false);
locales_list = (ListView) vista.findViewById(R.id.localesList);
new getLocalesAsyncTask().execute();
return vista;
}
private void setListAdapter() {
Log.e("Adapter","Adapter...");
locales_list.setAdapter(new LocalesAdapter(getActivity(), getActivity(), localesList));
locales_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
//detailInstagram(list.get(position));
}
});
}
这是我的片段
public class LocalesFragmento extends Fragment {
ListView locales_list;
private List localesList;
private Context context;
public LocalesFragmento() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View vista = inflater.inflate(R.layout.locales_list, container, false);
locales_list = (ListView) vista.findViewById(R.id.localesList);
new getLocalesAsyncTask().execute();
return vista;
}
private void setListAdapter() {
Log.e("Adapter","Adapter...");
locales_list.setAdapter(new LocalesAdapter(getActivity(), getActivity(), localesList));
locales_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
//detailInstagram(list.get(position));
}
});
}
setOnItemClickListener永远不会执行。有什么想法吗?
我是否需要实现其他方法
谢谢。
致以最诚挚的问候。您在onActivityCreated方法上启动AsyncTask,因为在这里,在附加布局之前,您正在启动一个async,这可能是侦听器正在设置的原因
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
locales_list.setAdapter(new LocalesAdapter(getActivity(), getActivity(), localesList));
locales_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
//detailInstagram(list.get(position));
}
});
new getLocalesAsyncTask().execute();
}
您的LocaleAdapter可能是原因。您将上下文getActivity传递给适配器两次
locales_list.setAdapter(new LocalesAdapter(getActivity(), getActivity(), localesList));
确保传递给LocaleAdapter的参数正确。看起来您没有调用setListAdapter方法。如果你是,你从哪里调用这个方法?是的,我调用了这个方法。。。在执行AsyncTask以获取数据表单WebService之前。您的列表项布局是什么样的?如果任何视图是可单击的或可聚焦的,例如它包含一个按钮,则侦听器将永远不会被调用。LocaleAdapter的构造函数对我来说似乎很奇怪。我通常在实例化调用中使用分配给上下文类型变量mCtx的getApplicationContext。你有两次活动。为什么需要两次上下文?发布您的listview项目布局。如果您使用了任何具有类似焦点按钮的视图,imageButton则setOnItemClickListener不会调用。如果您正在将自定义布局加载到listview,则将android:focusable=false添加到其子视图