Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android deshabilitar los elementos de vista de lista

Así que básicamente necesito un poco de ayuda o algunas sugerencias con el problema que tengo. Estoy poblando mi vista de la lista de la base de datos y necesito comprobar cuando estoy creando mi listview si el id del artículo en la position es igual que el id de otra tabla en mi base de datos. Si lo es, puede hacer clic en ese elemento, si no quiero que lo deshabilite, pero toda la información que encontré acerca de cómo hacerlo .. No puedo realmente entender cómo hacerlo.

 import java.util.ArrayList; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; //For more information look at the bottom of file. public class LazyAdapter extends BaseAdapter { private Activity activity; private String[] data; private ArrayList<String> name; private ArrayList<String> info; private static LayoutInflater inflater=null; public ImageLoader imageLoader; private Bitmap b; public LazyAdapter(Activity a, Bitmap d, ArrayList<String> names, ArrayList<String> information) { activity = a; b=d; name=names; info = information; inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); imageLoader=new ImageLoader(activity.getApplicationContext()); } public int getCount() { return name.size(); } public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } public static class ViewHolder{ public TextView name,info; public ImageView image; } public View getView(int position, View convertView, ViewGroup parent) { View vi=convertView; ViewHolder holder; if(convertView==null){ vi = inflater.inflate(R.layout.item, null); holder=new ViewHolder(); holder.name=(TextView)vi.findViewById(R.id.name); holder.info=(TextView)vi.findViewById(R.id.info); holder.image=(ImageView)vi.findViewById(R.id.image); vi.setTag(holder); Log.v("Position","Position : "+position); } else holder=(ViewHolder)vi.getTag(); holder.name.setText(name.get(position)); holder.info.setText(info.get(info.size()-1)); //Here I must do a black magic and get the images if user had 'em. holder.image.setImageBitmap(b); //holder.image.setTag(data[position]); //imageLoader.DisplayImage(data[position], activity, holder.image); // Black magic over. return vi; } } 

¿Alguna idea o sugerencia de cómo hacer eso?

  • ¿Cómo actualizar ListView en caso de uso CursorAdapter?
  • Elemento de lista con CheckBox no se puede hacer clic
  • Android ListView Despliegue hacia abajo para actualizar
  • Establecer el elemento activado en ListView mediante programación
  • Agregar o quitar encabezado y pie de página dinámicamente
  • ¿Hay algo como NSDictionary en android?
  • ¿Por qué ListView.getCheckedItemPositions () no devuelve valores correctos?
  • Personalización de los colores de Android ListView?
  • Diferencia entre CHOICE_MODE_MULTIPLE y CHOICE_MODE_MULTIPLE_MODAL?
  • Posición de retención en ListView después de llamar a notifyDataSetChanged
  • Android listview, pase a la acción
  • Android ListView Despliegue hacia abajo para actualizar
  • 5 Solutions collect form web for “Android deshabilitar los elementos de vista de lista”

    En el adaptador hay un nombre de método isEnabled que puede overide. Esto se llama para cada fila como getview. El onclicklistener sólo se disparará si esta función devuelve true. Así que intente hacer eso en su adaptador customm.

     @Override public boolean isEnabled(int position) { if(YOUR CONDTITION){ return false; } return true; } 

    Cuando pase una lista de objetos a BaseAdpater, agregue un campo en el objeto de esta lista llamado isEnabled y póngalo en true / false según sea necesario, entonces anule el método isEnabled de BaseAdapter como este

     @Override public boolean isEnabled(int position) { return info.get(position).isEnabled; } 

    Donde info es tu lista de objetos

    Por ejemplo, si desea desactivar las posiciones 0 a 5

     @Override public boolean isEnabled(int position){ if(position >= 0 && position < 6) return false; else return true; } @Override public boolean areAllItemsEnabled(){ return true; } @Override public View getView(int position, View convertView, ViewGroup parent) { //CODE OF ADAPTER } 

    No estoy seguro de lo que estás haciendo allí, pero lo que quieres hacer es definir tu clase como lo harías normalmente extendiendo Actividad (o ListActivity). A continuación, convertir su clase de adaptador en una clase anidada dentro de la clase de Actividad extendiendo BaseAdapter.

    Una vez hecho esto, escribirá su método getView () dentro de su clase de adaptador. Asigne el OnClickListener a la vista allí dependiendo de la condición que usted ha mencionado.

    En su adaptador, agregue esto.

     if ((position)!="your item"){ view.setEnabled(true); view.setClickable(true); } else{ view.setEnabled(false); view.setClickable(false); } 

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.