SQLite
 sql >> Database >  >> RDS >> SQLite

Visualizza i dati SQLite in RecyclerView

Puoi iniziare con un Bean per contenere e modellare le informazioni e renderle più facili da implementare.

public class DataBean{
    protected int id;
    protected String name;
    protected String card;
    protected String code;
    //Setter, Getters and constructor
    ...
}

Con il DataBean creato, puoi modificare i tipi di ritorno dei tuoi metodi in DataBean o in un List e compilare all'interno di ciascun metodo invece di restituire una String con tutti i campi.

public DataBean getData(String name){
    ...
    DataBean bean = null;
    if (cursor.moveToFirst()) {
        int index = cursor.getColumnIndex(DataBaseHelper.UID);
        int index2 = cursor.getColumnIndex(DataBaseHelper.NAME);
        int index3 = cursor.getColumnIndex(DataBaseHelper.CARD);
        int index4 = cursor.getColumnIndex(DataBaseHelper.CODE);
        int id = cursor.getInt(index);
        String personName = cursor.getString(index2);
        String card = cursor.getString(index3);
        String code = cursor.getString(index4);
        bean = new DataBean(id, name, card, code);    
    }
    return bean;
}

public List<DataBean> getAllData() {
    List<DataBean> list = new ArrayList<>();
    ...
    while (cursor.moveToNext()) {
        int index = cursor.getColumnIndex(DataBaseHelper.UID);
        int index2 = cursor.getColumnIndex(DataBaseHelper.NAME);
        int index3 = cursor.getColumnIndex(DataBaseHelper.CARD);
        int index4 = cursor.getColumnIndex(DataBaseHelper.CODE);
        int cid = cursor.getInt(index);
        String name = cursor.getString(index2);
        String card = cursor.getString(index3);
        String code = cursor.getString(index4);
        DataBean bean = new DataBean(cid, name, card, code);
        list.add(bean);
    }
    return list;
}

Ora quando chiami i tuoi metodi hai uno o più oggetti DataBean, ora devi scrivere il tuo adattatore per mostrare le informazioni in RecyclerView.

Per prima cosa devi collegare e configurare RecyclerView nella tua attività.

mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
mRecyclerView.setAdapter(new DataBeanAdapter(dbAdapter.getAllData(), R.layout.item));

Dopo è necessario creare DataBeanAdapter e ViewHolder.

public class DataBeanAdapter extends RecyclerView.Adapter<DataBeanAdapter.ViewHolder>{
    private List<DataBean> items;
    private int itemLayout;

    public DataBeanAdapter(List<DataBean> items, int itemLayout){
        this.items = items;
        this.itemLayout = itemLayout;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(itemLayout, parent, false);
        return new ViewHolder(v);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        DataBean item = items.get(position);
        holder.name.setText(item.getName());
        holder.card.setText(item.getCard());
        //All the thing you gonna show in the item
    }

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

    public static class ViewHolder extends RecyclerView.ViewHolder {
        public TextView name;
        public TextView card;

        public ViewHolder(View itemView) {
            super(itemView);
            name = (TextView) itemView.findViewById(R.id.name);
            card = (TextView) itemView.findViewById(R.id.card);
        }
    }
}

Gli ID, il layout e gli attributi del ViewHolder a seconda di chi mostrerai per articolo in RecyclerView.