簡體   English   中英

同時閱讀3個選定項目

[英]Read 3 selected item in the same time

如何在同一時間閱讀3個微調器選定的項目? 我在spinner1,2,3中有WorkDetails.java ,它們的值已插入到SQLite 在我的UpdatePage.java ,我想要檢出所選項目,並且首先應在spinner project1,project2 and project3顯示所選項目。

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);
}

假設spinner1保持值1, spinner2保持2, spinner3保持3.當來到updatePage ,spinner project1應首先顯示1,將project2顯示為2,依此類推。 但問題現在是project1,2,而且3顯示值1首先...我怎樣才能實現這個目標?

你可以為此目的嘗試一些邏輯

從數據庫中取三個值。 別理他們

selected_value_of_spinner1selected_value_of_spinner2selected_value_of__spinner3

然后定義你的方法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;
    }

顯示從您的微調器中的數據庫獲得的值,如下所示

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));

基本上這里發生的是

  1. 您從數據庫中獲取值

  2. 您匹配從微調器中的數據庫獲得的值,以通過getPosition()方法在微調器中獲取其位置。

  3. 根據通過setSelection(position)方法從步驟2獲得的位置設置微調器值。

由於您有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) {

            }
        });

並聲明:

String selectedItem1;
String selectedTtem2;
String selectedItem3;

作為全球變量。 希望能幫助到你!!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM