Android OnItemClickListener和OnClickListener使用BaseAdapter不适用于ListView
这是我不工作的代码 我使用'AsyncTask'从服务器获取数据,并使用'baseadapter'将数据设置为'listview',但使用'convertview.setonclicklistner'在适配器类中工作,并且在'Fragmentclass(import android.support.v4.app.Fragment;)中包含以下代码,所以我认为这没有问题Android OnItemClickListener和OnClickListener使用BaseAdapter不适用于ListView,android,listview,baseadapter,Android,Listview,Baseadapter,这是我不工作的代码 我使用'AsyncTask'从服务器获取数据,并使用'baseadapter'将数据设置为'listview',但使用'convertview.setonclicklistner'在适配器类中工作,并且在'Fragmentclass(import android.support.v4.app.Fragment;)中包含以下代码,所以我认为这没有问题 @Override public View onCreateView(LayoutInflater inflater, Vie
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
view= inflater.inflate(R.layout.fragment_restaurants, container, false);
restaurant_list = (ListView)view.findViewById(R.id.restatrant_lv);
no_restaturants=(TextView)view.findViewById(R.id.no_restaturants);
// listening to single list item on click
restaurant_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Log.e("temp","temppppp");
}
});
//set layout slide listener
rowItems = new ArrayList<>();
history_list = new ArrayList<HashMap<String, String>>();
list_adapter = new ViewAdapter(getActivity(),rowItems);
restaurant_list.setAdapter(list_adapter);
}
@覆盖
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图=充气机。充气(R.layout.fragment_,容器,假);
restaurant\u list=(ListView)view.findviewbyd(R.id.restarant\u lv);
no_restarants=(TextView)view.findViewById(R.id.no_restarants);
//在单击时侦听单个列表项
餐厅列表.setOnItemClickListener(新AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
Log.e(“temp”、“tempppp”);
}
});
//设置布局幻灯片侦听器
rowItems=新的ArrayList();
history_list=new ArrayList();
list_adapter=新的ViewAdapter(getActivity(),rowItems);
餐厅列表。设置适配器(列表适配器);
}
解决这个问题的办法是什么?
android:descendantFocusability="blocksDescendants"
如果任何ListView包含可聚焦或可单击的视图,则McClickListener将无法工作。在这种情况下,我们需要使用这个
设置适配器后,尝试设置setOnClickListener: 像这样:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
view= inflater.inflate(R.layout.fragment_restaurants, container, false);
restaurant_list = (ListView)view.findViewById(R.id.restatrant_lv);
no_restaturants=(TextView)view.findViewById(R.id.no_restaturants);
//set layout slide listener
rowItems = new ArrayList<>();
history_list = new ArrayList<HashMap<String, String>>();
list_adapter = new ViewAdapter(getActivity(),rowItems);
restaurant_list.setAdapter(list_adapter);
// listening to single list item on click
restaurant_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Log.e("temp","temppppp");
}
});
}
@覆盖
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图=充气机。充气(R.layout.fragment_,容器,假);
restaurant\u list=(ListView)view.findviewbyd(R.id.restarant\u lv);
no_restarants=(TextView)view.findViewById(R.id.no_restarants);
//设置布局幻灯片侦听器
rowItems=新的ArrayList();
history_list=new ArrayList();
list_adapter=新的ViewAdapter(getActivity(),rowItems);
餐厅列表。设置适配器(列表适配器);
//在单击时侦听单个列表项
餐厅列表.setOnItemClickListener(新AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
Log.e(“temp”、“tempppp”);
}
});
}
将id添加到自定义\u列表\u item.xml的父布局中
holder.parentLayout.setOnClickListener(new OnClickItem(position));
private class OnClickItem implements View.OnClickListener{
private int mPostion;
public OnClickItem(int position){
mPostion = position;
}
@Override
public void onClick(View v) {
YourActivity yourActivity = (YourActivity) mContext;
yourActivity.onItemClicked(mPostion);
}
}
是的,我也试过了,但还是不起作用…:(@Saccan你能发布你的.xml文件吗?你的xml文件中有任何可聚焦的项吗?这是xml文件@Mohammad nabilyeh的链接,我在listview中也添加了这两行代码..android:focusableInTouchMode=“false”android:focusable=“false”它在“yourActivity.onItemClicked(mPostion)”中显示错误这一行..但我已经在其他项目中使用过了,它是有效的,但在这个项目中不起作用…不知道为什么…甚至SetListViewHeightBasedOn儿童也不起作用