Rendere non selezionabile una riga in una ListView in Android

Mattepuffo's logo
Rendere non selezionabile una riga in una ListView in Android

Rendere non selezionabile una riga in una ListView in Android

Supponiamo di avere il nostro Adapter che estende BaseAdapter.

E supponiamo di volere rendere non selezionabile una riga della nostra ListView nel caso di una determinata condizione.

Come possiamo fare?

Semplicemente facendo l'Override del metodo isEnabled.

Quindi una cosa del genere:

public class LazyAdapter extends BaseAdapter {

    private Activity activity;
    private ArrayList<HashMap<String, String>> data;
    private static LayoutInflater inflater = null;
    private int resLayout;
    HashMap<String, String> cliente = new HashMap<String, String>();

    public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d, int rl) {
        activity = a;
        data = d;
        resLayout = rl;
        inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        return data.size();
    }

    @Override
    public Object getItem(int position) {
        return position;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public boolean isEnabled(int position) {
        cliente = data.get(position);
        return cliente.get("ATTIVATO").equals("1");
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View vi = convertView;
        if (convertView == null) {
            vi = inflater.inflate(resLayout, null);
        }
        // DO STUFF
        return vi;
    }

}

Nel mio caso, tra i dati che passo all'Adapter, ne ho che si chiama ATTIVATO, ed è quello che vado a testare.

A seconda del valore, rendo selezionabile o meno la riga.

Ovviamente i dati li prendo nell'Activity o nel Fragment; ma diciamo che per il tema trattato non è molto importante.

Enjoy!


Condividi

Commentami!