From 9beb5605b825354daa340d8d6cd804a36e5662d5 Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Thu, 4 May 2023 20:40:06 +0800 Subject: [PATCH] Fix button not clickable in sim confirm dialog Bug: 261994361 Fix: 280787593 Test: Manually with Talkback on Test: Manually with Talkback off Change-Id: I23d4ea816eb534dcde48cc2ebc6bb4a9770d107e --- .../telephony/ConfirmDialogFragment.java | 53 ++++++++++++------- 1 file changed, 33 insertions(+), 20 deletions(-) diff --git a/src/com/android/settings/network/telephony/ConfirmDialogFragment.java b/src/com/android/settings/network/telephony/ConfirmDialogFragment.java index dceaf1cc878..d262a0e79ab 100644 --- a/src/com/android/settings/network/telephony/ConfirmDialogFragment.java +++ b/src/com/android/settings/network/telephony/ConfirmDialogFragment.java @@ -17,24 +17,27 @@ package com.android.settings.network.telephony; import android.app.Dialog; +import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.View; -import android.widget.AdapterView; +import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; +import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.FragmentActivity; import com.android.settings.R; import java.util.ArrayList; +import java.util.List; /** Fragment to show a confirm dialog. The caller should implement onConfirmListener. */ public class ConfirmDialogFragment extends BaseDialogFragment @@ -136,28 +139,10 @@ public class ConfirmDialogFragment extends BaseDialogFragment dialogMessage.setVisibility(View.VISIBLE); } - final ArrayAdapter arrayAdapterItems = new ArrayAdapter( - getContext(), - R.layout.sim_confirm_dialog_item_multiple_enabled_profiles_supported, list); final ListView lvItems = content.findViewById(R.id.carrier_list); if (lvItems != null) { lvItems.setVisibility(View.VISIBLE); - lvItems.setAdapter(arrayAdapterItems); - lvItems.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, - long id) { - Log.i(TAG, "list onClick =" + position); - Log.i(TAG, "list item =" + list.get(position)); - - if (position == list.size() - 1) { - // user select the "cancel" item; - informCaller(false, -1); - } else { - informCaller(true, position); - } - } - }); + lvItems.setAdapter(new ButtonArrayAdapter(getContext(), list)); } final LinearLayout infoOutline = content.findViewById(R.id.info_outline_layout); if (infoOutline != null) { @@ -197,4 +182,32 @@ public class ConfirmDialogFragment extends BaseDialogFragment } listener.onConfirm(getTagInCaller(), confirmed, itemPosition); } + + private class ButtonArrayAdapter extends ArrayAdapter { + private final List mList; + + ButtonArrayAdapter(Context context, List list) { + super(context, R.layout.sim_confirm_dialog_item_multiple_enabled_profiles_supported, + list); + mList = list; + } + + @NonNull + @Override + public View getView(int position, View convertView, @NonNull ViewGroup parent) { + View view = super.getView(position, convertView, parent); + view.setOnClickListener(v -> { + Log.i(TAG, "list onClick =" + position); + Log.i(TAG, "list item =" + mList.get(position)); + + if (position == mList.size() - 1) { + // user select the "cancel" item; + informCaller(false, -1); + } else { + informCaller(true, position); + } + }); + return view; + } + } }