删除所选项目微调的Andr​​oid中 [英] Remove Selected Spinner Item In Android

查看:162
本文介绍了删除所选项目微调的Andr​​oid中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


  1. 我在我的活动微调这是从JSON数据设置的项目
    当我选择微调的任何项目,并设置成微调,
    我已经做了所有的事情这个时候properly.But我想删除
    从微调选定的项目,我得到异常E / AndroidRuntime(1022):
    java.lang.UnsupportedOperationException和
    E / AndroidRuntime(1022):atandroid.widget.ArrayAdapter.remove(ArrayAdapter.java:212)

     在的code线E / AndroidRuntime(1022):在com.spinnerdemo.SpinDemo $ 1.onItemSelected(SpinDemo.java:102)


下面是我的code.请有人可以帮助我。
在先进的感谢。

 公共类SpinDemo延伸活动{    私人静态字符串strUrl =htt​​p://192.168.1.61/jyoti/android_app/all_questions.php;
    私人静态字符串TAG_ID =ID;
    私人静态字符串TAG_ code =Q_ preFIX
    私人静态字符串TAG_ code_ARR =问题;    JSONArray jsonArray = NULL;
    微调codeSpinner,spinner2;
    的EditText edTextSpinnerItem;
    的String []项目;    串strEdtext;
    串strid,STR code;
    ArrayList的<串GT; codeLIST;
    公共ArrayAdapter<串GT;适配器;    @覆盖
    公共无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_main);        codeLIST =新的ArrayList<串GT;();
        codeSpinner =(微调)findViewById(R.id.spinner2);        JSONParser jParser =新JSONParser();
        JSONObject的JSON = jParser.getJSONFromUrl(strUrl);
        尝试
        {
            jsonArray = json.getJSONArray(TAG_ code_ARR);             //通过所有联系人循环
             最终的String []项目=新的String [jsonArray.length()];             的for(int i = 0; I< jsonArray.length();我++)
             {
                 JSONObject的C = jsonArray.getJSONObject(I)                //存储在变量中的每个JSON项目                    strid = c.getString(TAG_ID);
                    STR code = c.getString(TAG_ code);
                    项目由[i] = c.getString(TAG_ code);
                    的System.out.println(你好事件+项目);                    适配器=新ArrayAdapter<串GT;(这一点,
                            android.R.layout.simple_spinner_item,项目);
                    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    codeSpinner.setAdapter(适配器);             }
        }        赶上(JSONException E){
            e.printStackTrace();
        }
        codeSpinner.setOnItemSelectedListener(新OnItemSelectedListener()
        {
            @覆盖
            公共无效onItemSelected(适配器视图<>为arg0,ARG1查看,
                    INT POS,长ARG3)
            {
                // TODO自动生成方法存根                字符串anyvariable =将String.valueOf(codeSpinner.getSelectedItem());
                的System.out.println(anyvariable =+ anyvariable);
                edTextSpinnerItem =(EditText上)findViewById(R.id.editText_SpinnerItem);
                edTextSpinnerItem.setText(anyvariable);
                的System.out.println(edTextSpinnerItem+ edTextSpinnerItem);
                串T = adapter.getItem(POS)
                的System.out.println(获得该项目的位置从适配器=+ T);
                adapter.remove(T);
                adapter.notifyDataSetChanged();
                codeSpinner.setAdapter(适配器);
                //mySpinner.setAdapter(m_adapterForSpinner);                //adapter.remove((字符串)codeSpinner.getSelectedItem());
                //adapter.notifyDataSetChanged();
                //System.out.println(\"Item被删除从微调降DWON表);            }            @覆盖
            公共无效onNothingSelected(适配器视图<>为arg0)
            {
                // TODO自动生成方法存根            }
        });    }}


解决方案

试试这个..

1)给出微调 setadapter 循环

2)如果您需要删除的任何项目。您需要使用的ArrayList 这是最简单的方式。

我的一些变化后发布code。

  @覆盖
    公共无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_main);        codeLIST =新的ArrayList<串GT;();
        codeSpinner =(微调)findViewById(R.id.spinner2);        JSONParser jParser =新JSONParser();
        JSONObject的JSON = jParser.getJSONFromUrl(strUrl);
        尝试
        {
            jsonArray = json.getJSONArray(TAG_ code_ARR);             //通过所有联系人循环
             最终的String []项目=新的String [jsonArray.length()];             的for(int i = 0; I< jsonArray.length();我++)
             {
                 JSONObject的C = jsonArray.getJSONObject(I)                //存储在变量中的每个JSON项目                    strid = c.getString(TAG_ID);
                    STR code = c.getString(TAG_ code);
                    项目由[i] = c.getString(TAG_ code);
                    的System.out.println(你好事件+项目);
                    codeList.add(STR code);             }适配器=新ArrayAdapter<串GT;(这一点,
                            android.R.layout.simple_spinner_item,codeLIST);
                    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    codeSpinner.setAdapter(适配器);
        }        赶上(JSONException E){
            e.printStackTrace();
        }
        codeSpinner.setOnItemSelectedListener(新OnItemSelectedListener()
        {
            @覆盖
            公共无效onItemSelected(适配器视图<>为arg0,ARG1查看,
                    INT POS,长ARG3)
            {
                // TODO自动生成方法存根                字符串anyvariable =将String.valueOf(codeSpinner.getSelectedItem());
                的System.out.println(anyvariable =+ anyvariable);
                edTextSpinnerItem =(EditText上)findViewById(R.id.editText_SpinnerItem);
                edTextSpinnerItem.setText(anyvariable);
                的System.out.println(edTextSpinnerItem+ edTextSpinnerItem);
                串T = adapter.getItem(POS)
                的System.out.println(获得该项目的位置从适配器=+ T);                对象T2 = adapter.getItem(POS)
        Log.v(T2,+ T2);
        codeList.remove(T2);
        adapter.notifyDataSetChanged();
            }            @覆盖
            公共无效onNothingSelected(适配器视图<>为arg0)
            {
                // TODO自动生成方法存根            }
        });    }

  1. I have spinner in my Activity which is set the item from JSON data and when i select any item from spinner and set into the spinner , and i have done all this things properly.But when i want to remove selected item from spinner i got exception " E/AndroidRuntime(1022): java.lang.UnsupportedOperationException" and "E/AndroidRuntime(1022):atandroid.widget.ArrayAdapter.remove(ArrayAdapter.java:212)"

    at the code line of "E/AndroidRuntime(1022):at com.spinnerdemo.SpinDemo$1.onItemSelected(SpinDemo.java:102)
    

Here is my code.Please can someone help me. Thanks in advanced.

public class SpinDemo extends Activity {

    private static String strUrl = "http://192.168.1.61/jyoti/android_app/all_questions.php";
    private static String TAG_ID = "id";
    private static String TAG_CODE = "q_prefix";
    private static String TAG_CODE_ARR = "Questions";

    JSONArray jsonArray = null;
    Spinner codeSpinner, spinner2;
    EditText edTextSpinnerItem;
    String[] items;

    String strEdtext;
    String strid , strcode ;
    ArrayList<String> codeList;
    public  ArrayAdapter<String> adapter ;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);



        codeList = new ArrayList<String>();
        codeSpinner = (Spinner) findViewById(R.id.spinner2);

        JSONParser jParser = new JSONParser();
        JSONObject json = jParser.getJSONFromUrl(strUrl);
        try
        {
            jsonArray = json.getJSONArray(TAG_CODE_ARR);

             // looping through All Contacts
             final String[] items = new String[jsonArray.length()];

             for(int i = 0; i < jsonArray.length(); i++)
             {
                 JSONObject c = jsonArray.getJSONObject(i);

                // Storing each json item in variable

                    strid = c.getString(TAG_ID);
                    strcode = c.getString(TAG_CODE);
                    items[i] = c.getString(TAG_CODE);
                    System.out.println("Hello events " + items);        

                    adapter = new ArrayAdapter<String>(this,
                            android.R.layout.simple_spinner_item,items);
                    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    codeSpinner.setAdapter(adapter);

             }
        }

        catch (JSONException e) {
            e.printStackTrace();
        }


        codeSpinner.setOnItemSelectedListener(new OnItemSelectedListener()
        {


            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int pos, long arg3)
            {
                // TODO Auto-generated method stub

                String anyvariable=String.valueOf(codeSpinner.getSelectedItem());
                System.out.println("anyvariable = " + anyvariable);
                edTextSpinnerItem=(EditText)findViewById(R.id.editText_SpinnerItem);
                edTextSpinnerItem.setText(anyvariable);
                System.out.println("edTextSpinnerItem " + edTextSpinnerItem);


                String t = adapter.getItem(pos);
                System.out.println("Get The Item Position From Adapter = " + t);




                adapter.remove(t);
                adapter.notifyDataSetChanged();
                codeSpinner.setAdapter(adapter);
                //mySpinner.setAdapter(m_adapterForSpinner);

                //adapter.remove((String)codeSpinner.getSelectedItem());
                //adapter.notifyDataSetChanged();
                //System.out.println("Item is Removed From The Spinner Drop Dwon List");



            }

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

            }
        });

    }



}

解决方案

Try this..

1) Give spinner setadapter after for loop

2) If you need to remove any item. You need to use ArrayList it is the easy way.

I Posted code after some changes.

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);



        codeList = new ArrayList<String>();
        codeSpinner = (Spinner) findViewById(R.id.spinner2);

        JSONParser jParser = new JSONParser();
        JSONObject json = jParser.getJSONFromUrl(strUrl);
        try
        {
            jsonArray = json.getJSONArray(TAG_CODE_ARR);

             // looping through All Contacts
             final String[] items = new String[jsonArray.length()];

             for(int i = 0; i < jsonArray.length(); i++)
             {
                 JSONObject c = jsonArray.getJSONObject(i);

                // Storing each json item in variable

                    strid = c.getString(TAG_ID);
                    strcode = c.getString(TAG_CODE);
                    items[i] = c.getString(TAG_CODE);
                    System.out.println("Hello events " + items);  
                    codeList.add(strcode);

             }

adapter = new ArrayAdapter<String>(this,
                            android.R.layout.simple_spinner_item,codeList);
                    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    codeSpinner.setAdapter(adapter);
        }

        catch (JSONException e) {
            e.printStackTrace();
        }


        codeSpinner.setOnItemSelectedListener(new OnItemSelectedListener()
        {


            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int pos, long arg3)
            {
                // TODO Auto-generated method stub

                String anyvariable=String.valueOf(codeSpinner.getSelectedItem());
                System.out.println("anyvariable = " + anyvariable);
                edTextSpinnerItem=(EditText)findViewById(R.id.editText_SpinnerItem);
                edTextSpinnerItem.setText(anyvariable);
                System.out.println("edTextSpinnerItem " + edTextSpinnerItem);


                String t = adapter.getItem(pos);
                System.out.println("Get The Item Position From Adapter = " + t);



                Object t2 = adapter.getItem(pos);
        Log.v("t2", ""+t2);
        codeList.remove(t2);
        adapter.notifyDataSetChanged();


            }

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

            }
        });

    }

这篇关于删除所选项目微调的Andr​​oid中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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