Android的 - 更新的微调选择列表视图 [英] Android - Updating list view on spinner selection

查看:98
本文介绍了Android的 - 更新的微调选择列表视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试更新列表视图,当我在微调中选择一个项目,在code ++工程,但无输出。我不能微调找出bug.On每次点击的项目我想查看其他列表。

 微调微调;
    字符串路径[] = {笔记本电脑,DesktopPC,片,加载项,游戏};
    字符串笔记本电脑[] = {戴尔,惠普,苹果};
    ListView控件lstView;


            lstView =(ListView控件)findViewById(R.id.listView1);

            ArrayAdapter<字符串>适配器=新的ArrayAdapter<字符串> (Category.this,android.R.layout.simple_spinner_item,路径);
            微调=(微调)findViewById(R.id.spinner1);
            spinner.setAdapter(适配器);
            spinner.setOnItemClickListener(新OnItemClickListener(){

                @覆盖
                公共无效onItemClick(适配器视图<>为arg0,查看ARG1,
                        INT ARG2,长ARG3){
                    // TODO自动生成方法存根
                    ArrayAdapter<字符串> lstAdapter =新的ArrayAdapter<字符串>(getApplicationContext(),android.R.layout.simple_list_item_1,笔记本电脑);
                    lstView.setAdapter(lstAdapter);
                    //lstView.refreshDrawableState();

                }
            });
 

解决方案

使用 OnItemSelectedListener 和使用的ArrayList<字符串> 。为您的适配器使用相同的。将项目添加到ArrayList和调用 notifyDataSetChanged 您的适配器上刷新lsitview。

也没有必要初始化适配器的微调选择侦听器。

修改以下根据您的要求

 微调微调;
        字符串路径[] = {笔记本电脑,DesktopPC,片,加载项,游戏};
        ArrayList的<字符串>名单=新的ArrayList<字符串>();
        字符串笔记本电脑[] = {戴尔,惠普,苹果};
        ListView控件lstView;
        ArrayAdapter<字符串>适配器,listadapter;
        公共无效的onCreate(包savedInstanceState){
             super.onCreate(savedInstanceState);
             的setContentView(R.layout.activity_main);
                lstView =(ListView控件)findViewById(R.id.listView1);
                的for(int i = 0; I< Laptops.length;我++)
                {
                    list.add(笔记本电脑[I]);
                }
                适配器=新的ArrayAdapter<字符串> (这一点,android.R.layout.simple_spinner_item,路径);
                listadapter =新的ArrayAdapter<字符串> (这一点,android.R.layout.simple_spinner_item,清​​单);
                lstView.setAdapter(listadapter);
                微调=(微调)findViewById(R.id.spinner1);
                spinner.setAdapter(适配器);
                spinner.setOnItemSelectedListener(新OnItemSelectedListener(){

                    @覆盖
                    公共无效onItemSelected(适配器视图<>为arg0,查看ARG1,
                            INT ARG2,长ARG3){
                        // TODO自动生成方法存根
                        字符串s = spinner.getItemAtPosition(ARG2)的ToString();
                        list.add(多个);
                        listadapter.notifyDataSetChanged();
                    }

                    @覆盖
                    公共无效onNothingSelected(适配器视图<>为arg0){
                        // TODO自动生成方法存根

                    }
                });

            }
 

I am trying to update a list view, when I select on an item in spinner, the code works but no output is generated. I cannot figure out the bug.On every click on the item in spinner I want to view different list.

    Spinner spinner;
    String path[] = {"Laptops","DesktopPC","Tablets","Add-Ons","Gaming"};
    String Laptops[] = {"Dell","Hp","Apple"};
    ListView lstView;


            lstView = (ListView) findViewById(R.id.listView1);

            ArrayAdapter<String> adapter = new ArrayAdapter<String> (Category.this, android.R.layout.simple_spinner_item, path );
            spinner = (Spinner) findViewById(R.id.spinner1);
            spinner.setAdapter(adapter);
            spinner.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1,
                        int arg2, long arg3) {
                    // TODO Auto-generated method stub
                    ArrayAdapter<String> lstAdapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, Laptops);
                    lstView.setAdapter(lstAdapter);
                    //lstView.refreshDrawableState();

                }
            });

解决方案

Use OnItemSelectedListener and use a ArrayList<String>. Use the same for your adapter. Add items to arraylist and call notifyDataSetChanged on your adapter to refresh lsitview.

Also there is no need to initialize your adapter in the spinner selection listener.

Modify the below according to your requirement

 Spinner spinner;
        String path[] = {"Laptops","DesktopPC","Tablets","Add-Ons","Gaming"};
        ArrayList<String> list = new ArrayList<String>();
        String Laptops[] = {"Dell","Hp","Apple"};
        ListView lstView;
        ArrayAdapter<String> adapter,listadapter;
        public void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.activity_main);
                lstView = (ListView) findViewById(R.id.listView1);
                for(int i=0;i<Laptops.length;i++)
                {
                    list.add(Laptops[i]);
                }
                adapter = new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item,path);
                listadapter = new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item,list);
                lstView.setAdapter(listadapter);
                spinner = (Spinner) findViewById(R.id.spinner1);
                spinner.setAdapter(adapter);
                spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

                    @Override
                    public void onItemSelected(AdapterView<?> arg0, View arg1,
                            int arg2, long arg3) {
                        // TODO Auto-generated method stub
                        String s = spinner.getItemAtPosition(arg2).toString();
                        list.add(s);
                        listadapter.notifyDataSetChanged();
                    }

                    @Override
                    public void onNothingSelected(AdapterView<?> arg0) {
                        // TODO Auto-generated method stub

                    }
                });

            }

这篇关于Android的 - 更新的微调选择列表视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆