Java Android ViewBinding-McClickListener不';我没打电话
请帮助找出为什么视图绑定Java Android ViewBinding-McClickListener不';我没打电话,java,android,onclicklistener,android-viewbinding,Java,Android,Onclicklistener,Android Viewbinding,请帮助找出为什么视图绑定onItemClickListener不起作用 简而言之:我正在加载片段列表。并且需要通过单击项来选择要加载的片段,因此为此我实现了AdapterView.OnItemClickListener。但当我执行一个click-nothing时,不会调用该方法 public class ChooserFragment extends ListFragment implements AdapterView.OnItemClickListener { private Ch
onItemClickListener
不起作用
简而言之:我正在加载片段列表。并且需要通过单击项来选择要加载的片段,因此为此我实现了AdapterView.OnItemClickListener
。但当我执行一个click-nothing时,不会调用该方法
public class ChooserFragment extends ListFragment implements AdapterView.OnItemClickListener {
private ChooserFragmentBinding mBinding;
private static final Class<?>[] CLASSES = new Class[]{
EmailPasswordFragment.class,
EmailPasswordFragment.class,
};
private static final int[] DESCRIPTION_IDS = new int[]{
R.string.desc_emailpassword,
R.string.desc_emailpassword,
};
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mBinding = ChooserFragmentBinding.inflate(inflater, container, false);
View view = mBinding.getRoot();
CustomArrayAdapter adapter = new CustomArrayAdapter(getContext(), android.R.layout.simple_list_item_2, CLASSES);
adapter.setDescriptionIds(DESCRIPTION_IDS);
mBinding.list.setAdapter(adapter);
mBinding.list.setOnItemClickListener(this);
return view;
}
@Override
public void onDestroyView() {
super.onDestroyView();
mBinding = null;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Class<?> clicked = CLASSES[position];
Log.d("Clicked", String.valueOf(position));
}
public static class CustomArrayAdapter extends ArrayAdapter<Class<?>> {
private Context mContext;
private int[] mDescriptionIds;
public CustomArrayAdapter(Context context, int resource, Class[] objects) {
super(context, resource, objects);
mContext = context;
}
@SuppressWarnings("NullableProblems")
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(android.R.layout.simple_list_item_1, null);
}
((TextView) view.findViewById(android.R.id.text1)).setText(mDescriptionIds[position]);
return view;
}
public void setDescriptionIds(int[] descriptionIds) {
mDescriptionIds = descriptionIds;
}
}
}
公共类选择器片段扩展ListFragment实现AdapterView.OnItemClickListener{
私有选择器碎片绑定绑定绑定;
私有静态最终类[]类=新类[]{
EmailPasswordFragment.class,
EmailPasswordFragment.class,
};
私有静态最终int[]描述\u id=new int[]{
R.string.desc_电子邮件密码,
R.string.desc_电子邮件密码,
};
@可空
@凌驾
创建视图时的公共视图(@NonNull LayoutInflater inflater、@Nullable ViewGroup container、@Nullable Bundle savedInstanceState){
mBinding=选择FragmentBinding.充气(充气器、容器、假);
View=mBinding.getRoot();
CustomArrayAdapter=新的CustomArrayAdapter(getContext(),android.R.layout.simple\u list\u item\u 2,类);
adapter.setDescriptionId(描述ID);
mBinding.list.setAdapter(适配器);
mBinding.list.setOnItemClickListener(此);
返回视图;
}
@凌驾
公共无效onDestroyView(){
super.onDestroyView();
mBinding=null;
}
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
单击的类=类[位置];
Log.d(“单击”,String.valueOf(位置));
}
公共静态类CustomArrayAdapter扩展ArrayAdapter是否有某些原因导致必须使用片段扩展ListFragment并实现AdapterView.OnItemClickListener?请以正常方式尝试,看看会发生什么:
mBinding.list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.d("LOG", "test");
}
});
mBinding.list.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Log.d(“日志”、“测试”);
}
});
看看这是否有帮助:感谢您的关注,原因是扩展了我尝试使用的“ListFragment”。两个选项都很好。
mBinding.list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.d("LOG", "test");
}
});