Problema de casilla de verificación en la aplicación instalada en listview
Me referí a estos enlaces enlace , enlace , enlace , enlace
Pero mi problema no se está resolviendo. Sé que hay muchas preguntas con respecto a este problema, pero mi problema es
- OnContextItemSelected no parece ser llamado
- ListView dinámico en Android Studio: Selección de elemento aleatorio y vista de lista de actualizaciones
- Android listview semitransparente selección color de una fila
- Cómo obtener una posición de elemento de lista haciendo clic en el botón dentro de él?
- Vista de la lista de android
Tengo 4 clases A, B, C, D
De clase A i goto Clase B donde todas las aplicaciones instaladas aparecen en listview. En la clase B i enviar Packagelist a la clase c (clase BaseAdapter) y luego qué aplicaciones el usuario ha seleccionado pasará a la clase A.
Así que mi problema es dónde o cómo puedo usar la clase POJO para pasar las aplicaciones instaladas a la clase baseadapter y, a continuación, cómo puedo obtener todos los valores seleccionados (nombre de la aplicación de cadena) y pasarlo a la clase A. y también cómo puedo mantener el estado de verificación de Casilla de verificación.
Cualquier ayuda plz.
Clase de adaptador personalizada
import java.util.List; import android.app.Activity; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.BaseAdapter; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.TextView; import android.widget.Toast; public class AppListAdapter extends BaseAdapter { List<PackageInfo> packageList; Activity context; PackageManager packageManager; boolean[] itemChecked; int checkBoxCounter = 0; int checkBoxInitialized = 0; public AppListAdapter(Activity context, List<PackageInfo> packageList, PackageManager packageManager) { super(); this.context = context; this.packageList = packageList; this.packageManager = packageManager; itemChecked = new boolean[packageList.size()]; } private class ViewHolder { TextView apkName; CheckBox ck1; } public int getCount() { return packageList.size(); } public Object getItem(int position) { return packageList.get(position); } public long getItemId(int position) { return 0; } @Override public View getView(final int position, View convertView, ViewGroup parent) { // final ViewHolder holder; checkBoxCounter = 0; checkBoxInitialized = 0; LayoutInflater inflater = context.getLayoutInflater(); if (convertView == null) { convertView = inflater.inflate(R.layout.apklist_item, null); final ViewHolder holder = new ViewHolder(); holder.apkName = (TextView) convertView .findViewById(R.id.ApkList_tvappname); holder.ck1 = (CheckBox) convertView .findViewById(R.id.ApkList_checkBox); holder.ck1 .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { AppsSelected element = (AppsSelected) holder.ck1 .getTag(); element.setSelected(buttonView.isChecked()); if (checkBoxCounter <= checkBoxInitialized) { // increment counter, when we scroll the List it // execute onCheckedChanged everytime so by // using this stuff we can maintain the state checkBoxCounter++; } else { element = (AppsSelected) holder.ck1.getTag(); element.setSelected(buttonView.isChecked()); if (element.isSelected()) Toast.makeText( context, "You selected " + element.getName(), Toast.LENGTH_LONG).show(); else Toast.makeText( context, "Not selected " + element.getName(), Toast.LENGTH_LONG).show(); } } }); convertView.setTag(holder); holder.ck1.setTag(packageList.get(position)); } else { ((ViewHolder) convertView.getTag()).ck1.setTag(packageList.get(position)); } ViewHolder holder = (ViewHolder) convertView.getTag(); PackageInfo packageInfo = (PackageInfo) getItem(position); Drawable appIcon = packageManager .getApplicationIcon(packageInfo.applicationInfo); String appName = packageManager.getApplicationLabel( packageInfo.applicationInfo).toString(); appIcon.setBounds(0, 0, 40, 40); holder.apkName.setCompoundDrawables(appIcon, null, null, null); holder.apkName.setCompoundDrawablePadding(15); holder.apkName.setText(appName); return convertView; } }
- Cómo poner editable editable dentro de un listview?
- Android ListView Fondo no pintado
- Cómo deshabilitar el elemento ListView después de que se ha hecho clic?
- ListView onItemClickListener no se llama
- Crear listview en el fragmento android
- Establecer LayoutParams de ListView cuando se utiliza DrawerLayout con fragmentos
- Android List View Array Índice Fuera de límites Excepción - ¿No hay pistas?
- Práctica recomendada para eliminar asincrónicamente un elemento ListView / RecyclerView
Usted puede referirse a mi respuesta aquí, lo que puede hacer es, estado de la casilla de verificación de la tienda en una matriz booleana, entonces usted no se enfrentará a este problema …..
Casilla de verificación de Android tema multiseleccionado
- Matrixcursor con proveedor de contenido no-db
- ¿Cómo puedo activar todas las advertencias cuando se utiliza ndk?