小编Mar*_*eer的帖子

从 LiveData(房间数据库)填充 Spinner

我在哪里

我正在尝试使用 Room 用数据库中的数据填充微调器。数据是一个术语列表,这些术语具有与之关联的课程。

我想在创建新课程时使用微调器来选择与之关联的术语。

目前,微调器不显示默认选项,但如果您单击微调器,它会显示可供选择的数据列表。从微调器中选择某些内容后,它不会显示您选择的内容。

选择之前/之后的微调器

显示可用选项的微调器

这是我将数据加载到微调器适配器的代码:

        termsList = new ArrayList<>();
        termIdList = new ArrayList<>();
        mTermViewModel = new ViewModelProvider(this).get(TermViewModel.class);
        mTermViewModel.getAllTerms().observe(this, new Observer<List<TermEntity>>() {
            @Override
            public void onChanged(@Nullable final List<TermEntity> terms) {
                for (TermEntity term : terms) {
                    termsList.add(term.getTermName());
                    termIdList.add(term.getTermId());
                }
            }
        });

        ArrayAdapter<String> adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_item, termsList);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        mTermSpinner.setAdapter(adapter);
    }
Run Code Online (Sandbox Code Playgroud)

这是 TermDAO

@Dao
public interface TermDAO {
    @Insert(onConflict = OnConflictStrategy.REPLACE)
    void insert(TermEntity term);

    @Query("DELETE FROM terms")
    void deleteAllTerms();

    @Query("SELECT * FROM terms ORDER BY termId ASC")
    LiveData<List<TermEntity>> getAllTerms(); …
Run Code Online (Sandbox Code Playgroud)

android dao android-spinner android-room android-viewmodel

4
推荐指数
1
解决办法
3200
查看次数

当项目添加到 RecyclerView 时,RecyclerView 中的 EditText 值会发生变化

我有一个 RecyclerView,其中包含带有 EditText 字段的视图列表。

我希望能够更改 EditTexts 中的值并更新我的数据集。我似乎正在完成此任务,但是当我向列表中添加新项目时,EditText 中的值会混淆。

我找不到为什么会发生这种情况。有什么想法吗?

主要活动

class MainActivity : AppCompatActivity() {
    private lateinit var recyclerView: RecyclerView
    private lateinit var viewAdapter: RecyclerView.Adapter<*>
    private lateinit var viewManager: RecyclerView.LayoutManager

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val myDataSet = ArrayList<Person>()
        myDataSet.add(Person("Tommy"))
        myDataSet.add(Person("John"))
        myDataSet.add(Person("Suzie"))
        myDataSet.add(Person("Leslie"))

        viewManager = LinearLayoutManager(this)
        viewAdapter = PersonAdapter(myDataSet)

        recyclerView = findViewById<RecyclerView>(R.id.rvPersons).apply {
            setHasFixedSize(true)

            layoutManager = viewManager
            adapter = viewAdapter
        }

        val button = findViewById<Button>(R.id.myButton)

        button.setOnClickListener {
            myDataSet.add(Person("new person"))
            myDataSet.forEach {person ->
                Log.i("my-tag", person.name)
            }
            rvPersons.adapter?.notifyDataSetChanged()
        }
    } …
Run Code Online (Sandbox Code Playgroud)

android android-edittext kotlin android-recyclerview

2
推荐指数
1
解决办法
4830
查看次数