MySQL-Datenbank mit Square Libraries – RecyclerView-Adapter Teil 4

von Ludy geschrieben am und aktualisiert am
Kategorien MySQL Datenbank
Schlagwörter , , , , ,

Nun wollen wir in der App auch was sehen und nicht nur im Log, also bauen wir uns erstmal einen Adapter (DeviceAdapter.java), der das RecyclerView füllt und in einzelne CardView darstellt.

Die Klasse wird erweitert mit:

RecyclerView.Adapter<DeviceAdapter.ViewHolder>

Unserem Constructor übergeben wir die ArrayList Details und erstellen eine Variable mDetails.

public class DeviceAdapter extends RecyclerView.Adapter<DeviceAdapter.ViewHolder> {

    private ArrayList<Devices.Details> mDetails;

    public DeviceAdapter(ArrayList<Devices.Details> details) {
        mDetails = details;
    }

In der onCreateViewHolder wird das Layout card_view_row.xml inflated dem DeviceAdapter.ViewHolder bei der Erstellung mitgegeben.

@Override
public DeviceAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.card_view_row, parent, false);
    return new ViewHolder(view);
}

Die onBindViewHolder ist die Methode, in der aus der ArrayListe von mDetails, die einzelnen Item’s ausgelesen werden und je einer CardView zugewiesen wird. Da es eine ArrayList ist, können wir bequem über die Position des Views, die Position des Item bzw. des Inhalt abfragen.

@Override
public void onBindViewHolder(DeviceAdapter.ViewHolder holder, int position) {
    Devices.Details details = mDetails.get(position);
    holder.textViewId.setText(details.getId());
    holder.textViewManufacturer.setText(details.getManufacturer());
    holder.textViewType.setText(details.getType());
}

Übergabe der Anzahl der Einträge in dem ArrayList.

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

Im ViewHolder initialisieren wir die einzelnen Views (TextView)

class ViewHolder extends RecyclerView.ViewHolder {

    private TextView textViewId;
    private TextView textViewManufacturer;
    private TextView textViewType;

    ViewHolder(View itemView) {
        super(itemView);
        this.textViewId = (TextView) itemView.findViewById(R.id.textViewId);
        this.textViewManufacturer = (TextView) itemView.findViewById(R.id.textViewManufacturer);
        this.textViewType = (TextView) itemView.findViewById(R.id.textViewType);
    }
}

DeviceAdapter.java

public class DeviceAdapter extends RecyclerView.Adapter<DeviceAdapter.ViewHolder> {

    private ArrayList<Devices.Details> mDetails;

    public DeviceAdapter(ArrayList<Devices.Details> details) {
        mDetails = details;
    }

    @Override
    public DeviceAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.card_view_row, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(DeviceAdapter.ViewHolder holder, int position) {
        Devices.Details details = mDetails.get(position);
        holder.textViewId.setText(details.getId());
        holder.textViewManufacturer.setText(details.getManufacturer());
        holder.textViewType.setText(details.getType());
    }

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

    class ViewHolder extends RecyclerView.ViewHolder {

        private TextView textViewId;
        private TextView textViewManufacturer;
        private TextView textViewType;

        ViewHolder(View itemView) {
            super(itemView);
            this.textViewId = (TextView) itemView.findViewById(R.id.textViewId);
            this.textViewManufacturer = (TextView) itemView.findViewById(R.id.textViewManufacturer);
            this.textViewType = (TextView) itemView.findViewById(R.id.textViewType);
        }
    }
}