lundi 23 novembre 2015

How the Spinner setSelection() works?

I have two Spinners in Activity A and they hold these items:
{"Pro-XXX-XXX","TRN-XXX-XXX","SRV-XXX-XXX","PRO-REE-BERGARDING","PRO-SKM-SSS","PRO-SKM-DI","PRO-SKM-PACKING","PRO-SIE-AVAGO_S110","PRO-SIE-BIOCON","PRO-BCM-T13/T17"}.

Assume that in Spinner1, I select value SRV, and in Spinner2 I select TRN. Finally I save the selected value into SQLite.

In Activity B, I want to retrieve the item out and display on SpinnerA and B. Note that Spinner A and B have the same items as the Spinners in Activity A.

Activity B

public class B extends Fragment {

    SQLiteDatabase database;
    MyDatabaseHelper dbHelper;
    Cursor c;
    Spinner weather3,status3,project1,project2,project3,project4;
    EditText name3;
    EditText date3;
    String date;
    String ID;
    String Project11;
    String Project22;

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View view = inflater.inflate(R.layout.u, container, false);
        dbHelper = new MyDatabaseHelper(getActivity());
        project1 = (Spinner) view.findViewById(R.id.spinner8);
        project2 = (Spinner) view.findViewById(R.id.spinner9);
        name3 = (EditText)view. findViewById(R.id.editText9);
        date3 = (EditText)view. findViewById(R.id.editText12);
        Bundle bundle=this.getArguments();
        if(getArguments()!=null)
        {
            date=bundle.getString("date1");
            ID = bundle.getString("ID");
        }
        Log.e("TAG",date);
        Log.e("TAG",ID);
         RetrievePage(date, ID);
         return view;
    }



    public void addProject1(String l)
    {

        String[] arr = new String[]{"Pro-XXX-XXX","TRN-XXX-XXX","SRV-XXX-XXX","PRO-REE-BERGARDING","PRO-SKM-SSS","PRO-SKM-DI","PRO-SKM-PACKING","PRO-SIE-AVAGO_S110",
                "PRO-SIE-BIOCON","PRO-BCM-T13/T17","TRIN-IN_HOUSE","TRIN-EXTERNAL","SRIV-SIE-LEMONGRASS","SRV-PW-SIMOCODE","SRV-REE-SIMOCODE","PRO-SKM-D5","PRO-SKM-DRIOU","PRO-BKI-DESMET",
                "PRO-BKI-INFINEON","PRO-INH-ANDROID","PRO-BCM-S120","PRO-GAW-OP"};
        List<String> list = new ArrayList<String>();
        String project11 = l;
        list.add(project11);
        for(String s:arr){
            if(!list.contains(s)){
                list.add(s);
            }
        }
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_dropdown_item, list);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        project1.setAdapter(adapter);
    }

    public void addProject2(String d)
    {

        String[] arr = new String[]{"Pro-XXX-XXX","TRN-XXX-XXX","SRV-XXX-XXX","PRO-REE-BERGARDING","PRO-SKM-SSS","PRO-SKM-DI","PRO-SKM-PACKING","PRO-SIE-AVAGO_S110",
                "PRO-SIE-BIOCON","PRO-BCM-T13/T17","TRIN-IN_HOUSE","TRIN-EXTERNAL","SRIV-SIE-LEMONGRASS","SRV-PW-SIMOCODE","SRV-REE-SIMOCODE","PRO-SKM-D5","PRO-SKM-DRIOU","PRO-BKI-DESMET",
                "PRO-BKI-INFINEON","PRO-INH-ANDROID","PRO-BCM-S120","PRO-GAW-OP"};
        List<String> list = new ArrayList<String>();
        String project22 = d;
        list.add(project22);
        for(String s:arr){
            if(!list.contains(s)){
                list.add(s);
            }
        }
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_dropdown_item, list);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        project2.setAdapter(adapter);
    }

       public void RetrievePage(String date, String id) {
        final String date2=date;
        final String id2 = id;


        database = dbHelper.getWritableDatabase();
        c = database.rawQuery("SELECT i.Weather, i.Status,w.Subcontractors, w.NumberOfPerson, w.NumberOfHours, wd.Project, wd.WorkDescription, wd.Per, wd.TimeIn, wd.TimeOut FROM Information i LEFT JOIN WorkForce w ON w.TInfo_id = i._id LEFT JOIN WorkDetails wd ON wd.Twf_id=w._id WHERE i.Name = ? AND i._id= ? ",
                new String[]{String.valueOf("Lim Chun Yao"),String.valueOf(id2)}, null);
        if (c != null) {
            while (c.moveToNext()) {

                Details WD = new Details();

                 Project11=c.getString(c.getColumnIndexOrThrow(MyDatabaseHelper.Project));
                 Project22=c.getString(c.getColumnIndexOrThrow(MyDatabaseHelper.Project));

                addProject1(Project11);
                addProject2(Project22);
                WD.setProject(Project11);
                WD.setProject(Project22);
            }
            Log.e("TAG1",Project11);
            Log.e("TAG2",Project22);
            c.close();
          }
    }
}

The value inserted into SQLite is correct, but the value displayed on Spinner A is incorrect.

The Log displays

11-23 16:46:29.517  29621-29621/? E/TAG1﹕ TRN-XXX-XXX
11-23 16:46:29.517  29621-29621/? E/TAG2﹕ TRN-XXX-XXX

and the Spinner A and B display TRN as well.
But Spinner A should display SRV instead of TRN.

I know there is a method called setSelection(), but how can it applied to my case?

Aucun commentaire:

Enregistrer un commentaire