单击 Spinner
项将新数据添加到 RecyclerView
中而不删除旧数据。
例如,我在 Spinner 中有两个
项目:Appliances
和 Accessories
。
默认情况下,我会在RecyclerView 中显示Appliances
数据,但每当我在Accessories 上tap
-它在 RecyclerView 中显示Accessories 数据
,但在 Appliances 数据下
,而我期望只有Accessories
数据放入 RecyclerView
MainActivity.java:
public class MainActivity extends AppCompatActivity {
.....
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu_screen);
.........
stringList = new ArrayList<String>();
stringList.add("Appliances");
stringList.add("Accessories");
ArrayAdapter<String> stringArrayAdapter = new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_dropdown_item_1line,
stringList);
spinnerMenu.setAdapter(stringArrayAdapter);
......
initializeAdapter();
.....
spinnerMenu.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch (position) {
case 0:
presenter.loadAppliances();
break;
case 1:
presenter.loadAccessories();
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
.......
}
public void initializeAdapter() {
categoryAdapter = new CategoryAdapter(this, new ArrayList<Category>());
mRecyclerView.setAdapter(categoryAdapter);
}
public void addMenu(List<Category> posts) {
categoryAdapter.addAllData(posts);
categoryAdapter.notifyDataSetChanged();
}
}
类别适配器.java:
@Override
public int getItemCount() {
return posts.size();
}
public void setPosts(List<Categories> posts) {
this.posts = posts;
}
public void clearData() {
posts.clear();
}
public void addAllData(List<Categories> posts) {
this.posts.addAll(posts);
}
}
最佳答案
首先清除旧的 ArrayList,然后将数据添加到 Arraylist。
public void addMenu(List<Category> posts) {
categoryAdapter.addAllData(posts);
categoryAdapter.notifyDataSetChanged();
}
public void addAllData(List<Categories> posts) {
this.posts.clear();
this.posts.addAll(posts);
}
关于java - 使用单击 Spinner Item 刷新 ArrayList 以将新数据显示到 RecyclerView 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36930188/