java - 使用单击 Spinner Item 刷新 ArrayList 以将新数据显示到 RecyclerView 中

标签 java android arraylist android-recyclerview spinner

单击 Spinner 项将新数据添加到 RecyclerView 中而不删除旧数据。

例如,我在 Spinner 中有两个 项目:AppliancesAccessories

默认情况下,我会在RecyclerView 中显示Appliances 数据,但每当我在Accessoriestap -它在 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/

相关文章:

java - 线程 "main"java.util.ConcurrentModificationException 中的异常

android - 单击小部件上的按钮时更改布局

java - 计算 ArrayList 分成组的出现次数

Java 方法在 ArrayList 中查找匹配项

java - 如何将复杂的 hashmap 转换为 arrayList

java - 在Java RMI Naming.rebind(url,obj)中,obj的参数是什么?

java - CompareTo 方法(在 Comparable 接口(interface)中)是递归的吗?

java - CreatePlatformSocket() 返回错误 : An invalid argument was supplied. 端口不可用。在 Chrome 上运行 selenium 代码时退出...

android - 为什么 'getLayoutInflater()' 没有解析

java - 如何在获取百分比符号时避免 UnsupportedOperationException?