我在哪里
我正在尝试使用 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) 我有一个 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)