简体   繁体   English

同时阅读3个选定项目

[英]Read 3 selected item in the same time

How to read 3 spinner selected item in the same time? 如何在同一时间阅读3个微调器选定的项目? I have spinner1,2,3 in WorkDetails.java and their value has been inserted into SQLite . 我在spinner1,2,3中有WorkDetails.java ,它们的值已插入到SQLite In my UpdatePage.java , I want to retrieve the selected item out and the selected item should be displayed first in spinner project1,project2 and project3 . 在我的UpdatePage.java ,我想要检出所选项目,并且首先应在spinner project1,project2 and project3显示所选项目。

UpdatePage.java UpdatePage.java

public void RetrievePage(String name,String date, String id) {
    final String name2 = name;
    final String date2=date;
    final String id2 = id;
    final EditText name3 = (EditText) findViewById(R.id.editText9);
    final EditText date3 = (EditText) findViewById(R.id.editText12);
    name3.setText(name2);
    date3.setText(date2);

    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(name2),String.valueOf(id2)}, null);
    if (c != null) {
        while (c.moveToNext()) {
            Details WD = new Details();
            String Project11 = c.getString(c.getColumnIndexOrThrow(MyDatabaseHelper.Project));
            String Project22  =c.getString(c.getColumnIndexOrThrow(MyDatabaseHelper.Project));
            String Project33  =c.getString(c.getColumnIndexOrThrow(MyDatabaseHelper.Project));

            addProject1(Project11);
            addProject2(Project22);
            addProject3(Project33);
            WD.setProject(Project11);
            WD.setProject(Project22);
            WD.setProject(Project33);
        }
    }
    c.close();
}

public void addProject1(String l) {
    project1 = (Spinner) findViewById(R.id.spinner8);
    String[] arr = new String[]{"1","2","3"};
    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>(UpdatePage.this, 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) {
    project2 = (Spinner)findViewById(R.id.spinner9);
    String[] arr = new String[]{"1","2","3"};
    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>(UpdatePage.this, android.R.layout.simple_spinner_dropdown_item, list);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    project2.setAdapter(adapter);
}

public void addProject3(String e) {
    project3 = (Spinner)findViewById(R.id.spinner13);
    String[] arr = new String[]{"1","2","3"};
    List<String> list = new ArrayList<String>();
    String project33 = e;
    list.add(project33);
    for (String s:arr) {
        if (!list.contains(s)) {
            list.add(s);
        }
    }
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(UpdatePage.this, android.R.layout.simple_spinner_dropdown_item, list);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    project3.setAdapter(adapter);
}

Assume spinner1 holds value 1, spinner2 holds 2 and spinner3 holds 3. When come to updatePage , spinner project1 should display 1 first, project2 display 2 and so on. 假设spinner1保持值1, spinner2保持2, spinner3保持3.当来到updatePage ,spinner project1应首先显示1,将project2显示为2,依此类推。 But the problem now is project1,2,and 3 display value 1 first...how can I achieve this? 但问题现在是project1,2,而且3显示值1首先...我怎样才能实现这个目标?

You can try a little bit of logic for this purpose 你可以为此目的尝试一些逻辑

Take three values from the database. 从数据库中取三个值。 Let them be 别理他们

selected_value_of_spinner1 , selected_value_of_spinner2 , selected_value_of__spinner3 selected_value_of_spinner1selected_value_of_spinner2selected_value_of__spinner3

Then define your method getPosition as below 然后定义你的方法getPosition ,如下所示

public int getPosition(Spinner your_spinner, String string_value){

    int position = 0;

    for (int i=0;i<your_spinner.getCount();i++){
        if (your_spinner.getItemAtPosition(i).equals(string_value)){
            position = i;
        }
    }
    return position;
    }

The show the values got from the database in your spinners like following 显示从您的微调器中的数据库获得的值,如下所示

your_spinner1.setSelection(getPosition(your_spinner1, selected_value_of_spinner1));
your_spinner2.setSelection(getPosition(your_spinner2, selected_value_of_spinner2));
your_spinner3.setSelection(getPosition(your_spinner3, selected_value_of_spinner3));

Basically what happens here is 基本上这里发生的是

  1. You get the value from the database 您从数据库中获取值

  2. You match the value got from database in your spinner to get its position in spinner by getPosition() method. 您匹配从微调器中的数据库获得的值,以通过getPosition()方法在微调器中获取其位置。

  3. Set the spinner value according to the position you get from step 2 by setSelection(position) method. 根据通过setSelection(position)方法从步骤2获得的位置设置微调器值。

Since you are having 3 Spinner items then you can do this: 由于您有3个Spinner项目,因此您可以这样做:

project1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                selectedItem1 = list.get(position).toString();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

project2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                selectedItem2 = list.get(position).toString();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

project3.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                selectedItem3 = list.get(position).toString();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

and declare the: 并声明:

String selectedItem1;
String selectedTtem2;
String selectedItem3;

as global variables. 作为全球变量。 Hope it helps!!! 希望能帮助到你!!!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM