Cuadro de diálogo de alerta personalizado con listview personalizado
Necesito crear un diálogo de alerta personalizada con una sola opción. Pero los artículos tienen su propio diseño:
[VER (sólo color) _______ TEXT_______RADIOBUTTON]
- ListView con CustomCursorAdapter desplazamiento no es suave
- ¿Cómo puedo tener un ListView dentro de un NestedScrollView
- Resalte el elemento personalizado de lista cuando haga clic largo
- Filtro personalizado de ListView da el elemento incorrecto seleccionado cuando se filtra
- Cambiar el color de texto de ListView al hacer clic
He creado un diseño personalizado para listview, adaptador personalizado y tienen un buen resultado
Pero no puedo hacer una sola opción, nadie escucha establece listview …: Aquí está mi adaptador:
public class AlertListAdapter extends BaseAdapter { ArrayList<AlertChoiceItem> mData; Context mContext; LayoutInflater inflater; public AlertListAdapter(ArrayList<AlertChoiceItem> data, Context context) { mData = data; mContext = context; inflater = LayoutInflater.from(context); } @Override public int getCount() { return mData.size(); } @Override public Object getItem(int arg0) { return null; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater mInflater = (LayoutInflater) mContext .getSystemService(Activity.LAYOUT_INFLATER_SERVICE); convertView = mInflater.inflate(R.layout.item_alert_list, null); } TextView tvTitle = (TextView) convertView.findViewById(R.id.tvTitleAlertList); View v = (View) convertView.findViewById(R.id.vPriorAlertList); v.setBackgroundColor(GetColorByPriority.getColor(position, mContext)); tvTitle.setText(mData.get(position).getTitle()); RadioButton rb = (RadioButton) convertView.findViewById(R.id.rbRadioAlertList); return convertView; }
}
Aquí puedo crear alerta:
AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity()); // dialog.setContentView(R.layout.alert_list_radio); dialog.setTitle("List Title"); View customView = LayoutInflater.from(getActivity()).inflate( R.layout.alert_list_radio, null, false); ListView listView = (ListView) customView.findViewById(R.id.lvAlertList); // ArrayAdapter<String> ad = new ArrayAdapter<String>(this, // R.layout.single_item_layout , R.id.singleItem, dummies); ArrayList<AlertChoiceItem> itemList = new ArrayList<AlertChoiceItem>(); itemList.add(new AlertChoiceItem(false, "Critical", 5)); itemList.add(new AlertChoiceItem(false, "High", 4)); itemList.add(new AlertChoiceItem(false, "Medium", 3)); itemList.add(new AlertChoiceItem(false, "Low", 2)); itemList.add(new AlertChoiceItem(false, "Very low", 1)); itemList.add(new AlertChoiceItem(false, "Off filter", 0)); AlertListAdapter mAdapter = new AlertListAdapter(itemList, getActivity()); listView.setAdapter(mAdapter); listView.setOnItemClickListener(mOnItemClick); listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); dialog.setView(customView); dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }); dialog.show();
¿Cómo agregar una sola opción?
UPD: AlertChoiceItem implen:
public class AlertChoiceItem { private boolean isChecked; private String title; private int prior; public AlertChoiceItem(boolean isChecked, String title, int prior) { super(); this.isChecked = isChecked; this.title = title; this.prior = prior; } public boolean isChecked() { return isChecked; } public void setChecked(boolean isChecked) { this.isChecked = isChecked; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public int getPrior() { return prior; } public void setPrior(int prior) { this.prior = prior; }
}
- Animar elementos recién agregados en ListView
- Cómo manejar varios temporizadores de cuenta regresiva en ListView?
- Configuración de la tarea asincrónica para cargar Json en una vista de lista
- Adición de animación a un ListView para expandir / contraer contenido
- ¿Cómo desactivo la barra de autocorrección en los teclados de Android?
- Desaparecer divisor en ListView cuando ArrayAdapter.isEnabled devuelve false
- Detener la animación de desplazamiento ListView
- El Menú contextual de Fragmento utiliza ListView de otro Fragmento: registerForContextMenu (getListView ())
Resolver el problema de tal manera:
1) Haga que todas las vistas (!) En el diseño no se puedan enfocar.
2) Establecer onClickItemListener en la actividad de listview
3) Con cada clic enviar a la señal del adaptador para eliminar todas las verificaciones, establecer nuevo (por posición) y volver a dibujar listview.
Establecer en el archivo xml de item_alert_list
android:focusable = "false" android:focusableInTouchMode="false"
Para todos sus elementos de la interfaz de usuario.
Usted puede intentar agregar el listener de ItemClick a su listview
listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View v, int position, long id) { // do whatever you want } });
Compruebe la implementación de AlertChoiceItem
. Asegúrese de que implementa la interfaz Checkable
, así como pasa a través de la RadioButton
subyacente que está utilizando.