DbFlow 是一个用于 Android 的 ORM(对象关系映射)库,它简化了数据库操作。DbFlow 提供了对 RecyclerView.Adapter 和 CursorAdapter 的支持,使得在 RecyclerView 中显示数据库数据变得更加容易。
build.gradle
文件中添加 DbFlow 和 RecyclerView 的依赖:
dependencies { implementation 'com.raizlabs.android:DBFlow-core:5.0.0-alpha1' implementation 'com.raizlabs.android:DBFlow:5.0.0-alpha1' implementation 'androidx.recyclerview:recyclerview:1.2.1' }
RecyclerView.Adapter
的适配器类,并使用 DbFlow 提供的 FlowQueryList
来获取数据:
import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.raizlabs.android.dbflow.sql.language.SQLite; import com.raizlabs.android.dbflow.list.FlowQueryList; import java.util.List; public class UserAdapter extends RecyclerView.Adapter<UserAdapter.UserViewHolder> { private FlowQueryList<User> userList; public UserAdapter() { userList = SQLite.select().from(User.class).queryList(); } @NonNull @Override public UserViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_user, parent, false); return new UserViewHolder(view); } @Override public void onBindViewHolder(@NonNull UserViewHolder holder, int position) { User user = userList.get(position); holder.nameTextView.setText(user.name); holder.ageTextView.setText(String.valueOf(user.age)); } @Override public int getItemCount() { return userList.size(); } static class UserViewHolder extends RecyclerView.ViewHolder { TextView nameTextView; TextView ageTextView; UserViewHolder(View itemView) { super(itemView); nameTextView = itemView.findViewById(R.id.nameTextView); ageTextView = itemView.findViewById(R.id.ageTextView); } } }
DbFlow 也支持使用 CursorAdapter
,但需要注意的是,DbFlow 的 CursorAdapter
实现可能与传统的 CursorAdapter
有所不同。
import android.database.Cursor; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Cursor cursor = SQLite.select().from(User.class).query(); UserCursorAdapter adapter = new UserCursorAdapter(this, cursor, 0); RecyclerView recyclerView = findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setAdapter(adapter); } }
领取专属 10元无门槛券
手把手带您无忧上云