带有ArrayAdapter的ListView在Android 11上不显示内容

带有ArrayAdapter的ListView在Android 11上不显示内容,android,listview,android-listview,android-arrayadapter,android-11,Android,Listview,Android Listview,Android Arrayadapter,Android 11,在我们的android应用程序中,高级设置显示在正常设置下的自己的列表视图中。默认情况下,只有在事先输入密码的情况下,才会填充listview。 在我们在安卓11上测试该应用之前,这一切都很顺利。现在,如果输入密码,listview将保持为空。调试表明,连接到listview的ArrayAdapter确实填充了正确的数据。在安卓10或更低版本的设备上进行测试非常有效 任何进一步调试或查阅android迁移指南的尝试都没有结果。有人打针吗 XML: ArrayAdapter: public c

在我们的android应用程序中,高级设置显示在正常设置下的自己的列表视图中。默认情况下,只有在事先输入密码的情况下,才会填充listview。 在我们在安卓11上测试该应用之前,这一切都很顺利。现在,如果输入密码,listview将保持为空。调试表明,连接到listview的ArrayAdapter确实填充了正确的数据。在安卓10或更低版本的设备上进行测试非常有效

任何进一步调试或查阅android迁移指南的尝试都没有结果。有人打针吗

XML:


ArrayAdapter:

public class SettingsListAdapter extends ArrayAdapter<SettingsItemDataModel> {

    // View lookup cache
    private static class ViewHolder {
        TextView txtSettingLabel;
        TextView txtSetting;
    }

    Context mContext;

    public SettingsListAdapter(ArrayList<SettingsItemDataModel> data, Context context) {
        super(context, R.layout.row_item, data);
        this.mContext = context;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // Get the data item for this position
        SettingsItemDataModel dataModel = getItem(position);
        // Check if an existing view is being reused, otherwise inflate the view
        ViewHolder viewHolder; // view lookup cache stored in tag

        if (convertView == null) {

            viewHolder = new ViewHolder();
            LayoutInflater inflater = LayoutInflater.from(getContext());
            convertView = inflater.inflate(R.layout.row_item, parent, false);
            viewHolder.txtSettingLabel = convertView.findViewById(R.id.setting_list_child_label);
            viewHolder.txtSetting = convertView.findViewById(R.id.setting_list_child_setting);

            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        viewHolder.txtSettingLabel.setText(dataModel.getSettingPair()[0]);
        viewHolder.txtSetting.setText(dataModel.getSettingPair()[1]);
        // Return the completed view to render on screen
        return convertView;
    }
}
公共类设置sListAdapter扩展了ArrayAdapter{
//视图查找缓存
私有静态类视图持有者{
TextView txtSettingLabel;
文本视图TXT设置;
}
语境;
公共设置sListAdapter(ArrayList数据、上下文){
super(上下文、R.layout.row_项、数据);
this.mContext=上下文;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//获取此职位的数据项
SettingsItemDataModel dataModel=getItem(位置);
//检查是否正在重用现有视图,否则会膨胀视图
ViewHolder ViewHolder;//存储在标记中的视图查找缓存
if(convertView==null){
viewHolder=新的viewHolder();
LayoutInflater充气器=LayoutInflater.from(getContext());
convertView=充气机。充气(R.layout.row_项目,父项,false);
viewHolder.txtSettingLabel=convertView.findViewById(R.id.setting\u list\u child\u label);
viewHolder.txtSetting=convertView.findViewById(R.id.setting\u list\u child\u setting);
convertView.setTag(viewHolder);
}否则{
viewHolder=(viewHolder)convertView.getTag();
}
viewHolder.txtSettingLabel.setText(dataModel.getSettingPair()[0]);
viewHolder.txtSetting.setText(dataModel.getSettingPair()[1]);
//返回要在屏幕上渲染的已完成视图
返回视图;
}
}
活动(仅限相关部分。当用户正确输入密码时,将调用updateVancedSettings()):

私有数组列表设置;
私有列表视图高级设置列表视图;
私人设置SlistAdapter高级设置SlistAdapter;
私有ArrayList advancedSettings=新建ArrayList();
私有void设置列表视图(视图选项卡视图){
设置=新建ArrayList();
对于(SettingsItemDataModel.Identifier键:SettingsService.getInstance().getSettings().keySet()){
SettingsItemDataModel chldata=新建SettingsItemDataModel(键,SettingsService.getInstance().getSettings().get(键));
设置。添加(chldata);
}
ListView设置ListView=tabView.findViewById(R.id.settings\u list\u view);
SettingsListAdapter SettingsListAdapter=新的SettingsListAdapter(设置,上下文);
settingsListView.setAdapter(settingsListAdapter);
settingsListView.setOnItemClickListener((父、视图、位置、id)->{
如果(!isNavigationLocked()){
Object Object=parent.getItemAtPosition(位置);
SettingsItemDataModel dataModel=(SettingsItemDataModel)对象;
if(SettingsItemDataModel.Identifier.ADV_SETTINGS.equals(dataModel.getSettingsIdentifier())){
显示高级设置对话框();
}else if(SettingsItemDataModel.Identifier.LANGUAGE.equals(dataModel.getSettingsIdentifier())){
意向意向=新意向(设置、操作、区域设置);
星触觉(意向);
}else if(FASTMODE.equals(dataModel.getSettingsIdentifier())){
显示输入设置RadioDialog(数据模型);
}
}
});
advancedSettingsListView=tabView.findViewById(R.id.advanced\u设置\u列表\u视图);
advancedSettingsListAdapter=新设置sListAdapter(advancedSettings,上下文);
advancedSettingsListView.setAdapter(advancedSettingsListAdapter);
advancedSettingsListView.setOnItemClickListener((父项、视图、位置、id)->{
如果(!isNavigationLocked()){
Object Object=parent.getItemAtPosition(位置);
SettingsItemDataModel dataModel=(SettingsItemDataModel)对象;
if(DEL_ALL_MAILS.equals(dataModel.getSettingsIdentifier())){
显示简单设置对话框(数据模型);
}else if(IMG_FILE_TYPE.equals(dataModel.getSettingsIdentifier())){
显示输入设置RadioDialog(数据模型);
}else if(IMG_COMP_LEV.equals(dataModel.getSettingsIdentifier())){
显示输入设置SEEKBARDIALOG(数据模型);
}else if(SWIPE.equals(dataModel.getSettingsIdentifier())){
显示输入设置RadioDialog(数据模型);
}else if(ZIP_COMP_TYPE.equals(dataModel.getSettingsIdentifier())){
显示输入设置RadioDialog(数据模型);
}else if(ZIP_COMP_LEV.equals(dataModel.getSettingsIdentifier())){
显示输入设置指针对话框(数据模型);
}否则{
显示输入设置对话框(数据模型);
}
}
});
settingsListView.invalidate();
advancedSettingsListView.invalidate();
}
public void updateVancedSettings(){
advancedSettings.clear();
LinkedHashMap advSettingData=null;
advSettingData=SettingsService.getInstance().getAdvancedSettings();
对于(SettingsItemDataModel.Identifier键:advSettingData.keySet()){
SettingsItemDataModel chldata=新的SettingsItemDataModel(key,advSettingData.get(key));
advancedSettings.add(chldData);
}
试一试{
SettingsService.getInstance().saveExtAdvancedSetting();
}捕获(IOE异常){
e、 printStackTrace();
public class SettingsListAdapter extends ArrayAdapter<SettingsItemDataModel> {

    // View lookup cache
    private static class ViewHolder {
        TextView txtSettingLabel;
        TextView txtSetting;
    }

    Context mContext;

    public SettingsListAdapter(ArrayList<SettingsItemDataModel> data, Context context) {
        super(context, R.layout.row_item, data);
        this.mContext = context;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // Get the data item for this position
        SettingsItemDataModel dataModel = getItem(position);
        // Check if an existing view is being reused, otherwise inflate the view
        ViewHolder viewHolder; // view lookup cache stored in tag

        if (convertView == null) {

            viewHolder = new ViewHolder();
            LayoutInflater inflater = LayoutInflater.from(getContext());
            convertView = inflater.inflate(R.layout.row_item, parent, false);
            viewHolder.txtSettingLabel = convertView.findViewById(R.id.setting_list_child_label);
            viewHolder.txtSetting = convertView.findViewById(R.id.setting_list_child_setting);

            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        viewHolder.txtSettingLabel.setText(dataModel.getSettingPair()[0]);
        viewHolder.txtSetting.setText(dataModel.getSettingPair()[1]);
        // Return the completed view to render on screen
        return convertView;
    }
}
private ArrayList<SettingsItemDataModel> settings;
private ListView advancedSettingsListView;
private SettingsListAdapter advancedSettingsListAdapter;
private ArrayList<SettingsItemDataModel> advancedSettings = new ArrayList<>();

private void setupListViews(View tabView) {

    settings = new ArrayList<>();

    for (SettingsItemDataModel.Identifier key : SettingsService.getInstance().getSettings().keySet()) {

        SettingsItemDataModel chldData = new SettingsItemDataModel(key, SettingsService.getInstance().getSettings().get(key));

        settings.add(chldData);
    }

    ListView settingsListView = tabView.findViewById(R.id.settings_list_view);
    SettingsListAdapter settingsListAdapter = new SettingsListAdapter(settings, context);
    settingsListView.setAdapter(settingsListAdapter);
    settingsListView.setOnItemClickListener((parent, view, position, id) -> {
        if (!isNavigationLocked()) {
            Object object = parent.getItemAtPosition(position);
            SettingsItemDataModel dataModel = (SettingsItemDataModel) object;
            if (SettingsItemDataModel.Identifier.ADV_SETTINGS.equals(dataModel.getSettingsIdentifier())) {
                showAdvancedSettingsDialog();
            } else if (SettingsItemDataModel.Identifier.LANGUAGE.equals(dataModel.getSettingsIdentifier())) {
                Intent intent = new Intent(Settings.ACTION_LOCALE_SETTINGS);
                startActivity(intent);
            } else if (FASTMODE.equals(dataModel.getSettingsIdentifier())) {
                showInputSettingsRadioDialog(dataModel);
            }
        }
    });

    advancedSettingsListView = tabView.findViewById(R.id.advanced_settings_list_view);
    advancedSettingsListAdapter = new SettingsListAdapter(advancedSettings, context);
    advancedSettingsListView.setAdapter(advancedSettingsListAdapter);
    advancedSettingsListView.setOnItemClickListener((parent, view, position, id) -> {
        if (!isNavigationLocked()) {
            Object object = parent.getItemAtPosition(position);
            SettingsItemDataModel dataModel = (SettingsItemDataModel) object;

            if (DEL_ALL_MAILS.equals(dataModel.getSettingsIdentifier())) {
                showSimpleSettingsDialog(dataModel);
            } else if (IMG_FILE_TYPE.equals(dataModel.getSettingsIdentifier())) {
                showInputSettingsRadioDialog(dataModel);
            } else if (IMG_COMP_LEV.equals(dataModel.getSettingsIdentifier())) {
                showInputSettingsSeekBarDialog(dataModel);
            } else if (SWIPE.equals(dataModel.getSettingsIdentifier())) {
                showInputSettingsRadioDialog(dataModel);
            } else if (ZIP_COMP_TYPE.equals(dataModel.getSettingsIdentifier())) {
                showInputSettingsRadioDialog(dataModel);
            } else if (ZIP_COMP_LEV.equals(dataModel.getSettingsIdentifier())) {
                showInputSettingsSpinnerDialog(dataModel);
            } else {
                showInputSettingsDialog(dataModel);
            }
        }
    });
    settingsListView.invalidate();
    advancedSettingsListView.invalidate();
}

public void updateAdvancedSettings() {

    advancedSettings.clear();

    LinkedHashMap<SettingsItemDataModel.Identifier, String[]> advSettingData = null;
    advSettingData = SettingsService.getInstance().getAdvancedSettings();

    for (SettingsItemDataModel.Identifier key : advSettingData.keySet()) {

        SettingsItemDataModel chldData = new SettingsItemDataModel(key, advSettingData.get(key));

        advancedSettings.add(chldData);
    }
    try {
        SettingsService.getInstance().saveExtAdvancedSetting();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
advancedSettingsListAdapter.notifyDataSetChanged();