Put a switch in a viewHolder - Custom List in Android Studio

0

I have created an APP, a personalized list that is inflated with data from a WebService, as you see one of its fields is state, but it returns it in number (0,1,2) what I want to do is put it in "VACANTE", "EMPLOYED", "RESERVED" and that I achieve it with a switch , but I do not know how to apply it

That data is pulled from a PHP WebService This is my current code:

public class MetaAdapter extends RecyclerView.Adapter<MetaAdapter.MetaViewHolder>
        implements ItemClickListener {

    /**
     * Lista de objetos {@link Meta} que representan la fuente de datos
     * de inflado
     */
    private List<Plaza> items;

    /*
    Contexto donde actua el recycler view
     */
    private Context context;


    public MetaAdapter(List<Plaza> items, Context context) {
        this.context = context;
        this.items = items;
    }

    @Override
    public int getItemCount() {
        return items.size();
    }

    @Override
    public MetaViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(viewGroup.getContext())
                .inflate(R.layout.item_list, viewGroup, false);
        return new MetaViewHolder(v, this);
    }

    @Override
    public void onBindViewHolder(MetaViewHolder viewHolder, int i) {
        viewHolder.nivel.setText(items.get(i).getNivel());
        viewHolder.estado.setText(items.get(i).getEstado());
        viewHolder.colegio.setText(items.get(i).getIe());
        viewHolder.especialidad.setText(items.get(i).getEspecialidad());
        viewHolder.codigo.setText(items.get(i).getCodigoPlaza());
    }


    /**
     * Sobrescritura del método de la interfaz {@link ItemClickListener}
     *
     * @param view     item actual
     * @param position posición del item actual
     */
    @Override
    public void onItemClick(View view, int position) {
        DetailActivity.launch(
                (Activity) context, items.get(position).getPlazaID());
    }


    public static class MetaViewHolder extends RecyclerView.ViewHolder
            implements View.OnClickListener {
        // Campos respectivos de un item
        public TextView nivel;
        public TextView estado;
        public TextView colegio;
        public TextView especialidad;
        public TextView codigo;
        public ItemClickListener listener;


        public MetaViewHolder(View v, ItemClickListener listener) {
            super(v);
            nivel = (TextView) v.findViewById(R.id.nivel);
            estado = (TextView) v.findViewById(R.id.estado);
            colegio = (TextView) v.findViewById(R.id.colegio);
            especialidad = (TextView) v.findViewById(R.id.especialidad);
            codigo = (TextView) v.findViewById(R.id.codigo);
            this.listener = listener;
            v.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            listener.onItemClick(v, getAdapterPosition());
        }
    }
}


interface ItemClickListener {
    void onItemClick(View view, int position);
}

Currently in my application it looks like this:

    
asked by Ivan More Flores 18.07.2017 в 23:38
source

1 answer

1

If I'm not wrong, when you fill in the TextView status it's in this line:

viewHolder.estado.setText(items.get(i).getEstado());

To be able to display a text depending on the state, you should replace that line with this:

switch(items.get(i).getEstado())
{
    case 0: 
        viewHolder.estado.setText("VACANTE");
        break;
    case 1: 
        viewHolder.estado.setText("OCUPADO");
        break;
    case 2: 
        viewHolder.estado.setText("RESERVADO");
        break;
    default:
        viewHolder.estado.setText("ERROR");
}

I have added the default for security but if you are sure that it will NEVER take a value other than 0, 1 or 2 you do not have to put it.

Discuss if it works or not and if it does not work, say what happens.

    
answered by 19.07.2017 / 15:26
source