Я использовал эту библиотеку один раз, но с ListView
. Я думаю, что этот код должен работать с RecyclerView
:
/* The database */
@Table(name = "Person")
public class Person extends Model {
@Column(name = "Name")
public String name;
@Column(name = "Age")
public int age;
}
/* Your MainActivity */
List<Person> list = new ArrayList<>();
private RecyclerView rv;
/* Activity onCreate */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
list = getList(15);
rv = (RecyclerView) findViewById(R.id.recycler_view);
rv.setLayoutManager(new LinearLayoutManager(this));
rv.setAdapter(new Adapter());
}
private List<Person> getList(int age){
return new Select()
.from(Person.class)
.where("Age = ?", age)
.orderBy(/* order you like */)
.executeSingle();
}
private class Adapter extends RecyclerView.Adapter<Adapter.Holder> {
@Override
public Adapter onCreateViewHolder(ViewGroup parent, int viewType) {
// you should inflate the layout you want be laid in every row of the recycler view. Im just inflating a text view for convinence
return new Holder(LayoutInflater.from(parent.getContext()).inflate(android.R.layout.simple_list_item_1, parent, false));
}
@Override
public void onBindViewHolder(Holder holder, int position) {
// assign values to all view in the holder.
holder.tv.setText(list.get(position).name);
}
@Override
public int getItemCount() {
return list.size();
}
public class Holder extends RecyclerView.ViewHolder {
// here you load all the view in your layout
TextView tv;
public Holder(View itemView) {
super(itemView);
tv = (TextView) itemView;
}
}
}
Здесь я предполагаю, что вы уже создали и хранятся значения в базе данных, так как вопрос задать только для заполнения из базы данных.
Я не тестировал его, но думаю, он должен работать.
Вопрос заключается не только в заполнении 'RecyclerView' из базы данных, но и о привязке представления к набору данных и наблюдении за изменениями. Поэтому, когда изменения происходят в наборе данных, представление автоматически уведомляется о них. – naXa