用房间数据库填充微调器

Fill Spinner with Room Database

我正在制作我的第一个应用程序。 (有很多 google 和教程)。

我用以下 table 创建了一个房间数据库。

现在我想用 "team_name" 列的字符串填充 Spinner。

在 Spinner Selection 中,"team_url" 应该放在一个变量中。

不知道怎么做。

感谢您的帮助。

您好!

更新:

    Spinner league = findViewById(R.id.league);
    tableDAO = TeamDatabase.getInstance(this).getTableDAO();

    List<Team> allTable = tableDAO.getTable();

    ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, new ArrayList<String>());
    spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    league.setAdapter(spinnerAdapter);

    spinnerAdapter.addAll(allTable);
    spinnerAdapter.notifyDataSetChanged();

我假设您正在使用 Java 并且有一些与此类似的代码来初始化 Spinner

Spinner spinner = (Spinner)findViewById(R.id.mySpinner);
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, new ArrayList<>());  
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(spinnerAdapter);

您需要做的是使用 Room 从数据库中获取数据并将它们添加到适配器

spinnerAdapter.addAll(yourList);
spinnerAdapter.notifyDataSetChanged();

一旦用户点击任何项目,您可以使用回调函数获取团队名称并使用 Room 获取相应的 team_url。

你房间的道可能是这样的

@Dao
public interface TeamDao {
    @Query("SELECT * FROM team")
    List<Team> getAll();

    @Query("SELECT team_name FROM team")
    List<String> getAllTeamName();

    @Query("SELECT team_url FROM team WHERE team_name = :name")
    public abstract List<String> findURLByName(String name);

}