2012-07-28 2 views
1

사용자가 편집 텍스트에 숫자를 입력하면 내 스피치를 만들고 표시합니다. 사용자는 각 회 전자에서 항목을 선택한 다음 저장 버튼을 클릭합니다. 인터넷에서 보았지만 회 전자에서 위치를 검색 할 수있는 방법을 찾을 수 없었습니다. 나는 스피너의 위치를 ​​얻기 위해 여러 가지 방법을 attemped 한프로그래밍 방식으로 만든 스피너에서 위치를 얻는 방법

//numStockTanks is the number of spinners to be created 
numStockTanks = Integer.parseInt(numOfStockTanks.getText().toString());    
    // creates all the fields 
    for(int i = 1; i <= numStockTanks; i++) { 
     TableRow tR = new TableRow(this); 
     // creates the textView 
     tV1 = new TextView(this); 
     tV1.setText("Stock Tank #" + i + " size: "); 

     // add spinner to row 
     spinner = new Spinner(this); 
     ArrayAdapter<CharSequence> adapterStockTankSize2 = ArrayAdapter.createFromResource(
       this, R.array.StockTankSize, android.R.layout.simple_spinner_item); 
     adapterStockTankSize2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner.setAdapter(adapterStockTankSize2); 
     spinner.setId(1000 + i); 

     // add the TextView and the editText to the new TableRow 
     tR.addView(tV1); 
     tR.addView(spinner); 

     // add the TableRow to the TableLayout 
     tL.addView(tR,new TableLayout.LayoutParams(
       LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));  
    } // end for statement 
} // end getNumberCreateSpinner() 

하지만 난 그것을 알아낼 질수 : 여기에 내가 스피너를 생성하는 방법이다. 당신의 도움에 대한

ArrayList<Integer> mArraySpinner = new ArrayList<Integer>(); 
for (int i = 0; i < numStockTanks; i++) { 
      spinner = (Spinner) findViewById(1000 + i); 
      if (spinner.getSelectedItemPosition() == 1) { 
       mArraySpinner.add(100); 
      } else if (spinner.getSelectedItemPosition() == 2) { 
       mArraySpinner.add(200); 
      } else if (spinner.getSelectedItemPosition() == 3) { 
       mArraySpinner.add(210); 
      } else if (spinner.getSelectedItemPosition() == 4) { 
       mArraySpinner.add(295); 
      } else if (spinner.getSelectedItemPosition() == 5) { 
       mArraySpinner.add(400); 
      } else mArraySpinner.add(0); 
    } // end for statement 

감사를

편집 : 처음에 응답 한 후 내 최신 시도에

편집 편집 업데이트 : 여기에 내가 현재 가지고있는 것입니다 나는 줄 "을 디버깅 할 때 회 = (Spinner) findViewById (1000 + i); " 당신이 회 전자 ID에 대한 1000++를 사용하는

답변

0

난 당신이 (당신이 스피너를 만들 루프 내부) 스피너를 만들 때 onItemSelectedListener 설정하고, 클래스 필드 배열에 값을 설정하는 것을 사용한다.

mArraySpinner = new Array<Integer>[numStockTanks]; 
for(int i = 1; i <= numStockTanks; i++) { 

     // code to set spinner adapter, etc. 

spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 
    } 
    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 
     mArraySpinner[i] = spinner.getSelectedItemPosition(); 
    } 
}); 
+0

스피너가 변경된 후에가 아니라 클릭 이벤트에서 위치를 검색 중이므로 리스너가 필요하다고 생각하지 않습니다. – deerkiller11

+0

리스너를 사용하여 배열 값을 설정합니다 (나중에 대신 스피너로 배열을 만들어야 함). 그런 다음 버튼을 사용하여 마무리/작동합니다. 육체에 대한 내 대답을 업데이트/내 생각을 보여줍니다. – Barak

+0

나는이 코드를 사용하려고했는데, 청취자가 onCreate 메서드에서 "해고 됨"따라서 0 값이 배열에 입력되었다는 것을 알아 냈습니다. – deerkiller11

1

범프 : 나는 내 스피너를 가리키는 있지 않다 것을 알 수 있도록 그것은 correctely이 내가

편집에 도움을 필요는 null 말한다. 그리고 스피너 보유자를 얻으려는 동안 100++으로 확인하십시오.

코드에 작성한 if 조건을 업데이트하십시오. 변경 100에서 1000

변경되었습니다. 코드에서 아래 샘플 코드를 변경하십시오.

spinner = (Spinner) findViewById(1000 + i); 
     if (spinner.getId().equals("1000")) { 
      mArraySpinner.add(spinner.getSelectedItemPosition()); 
     } 
     else if(....){....} 
+0

내 코드에서 오류가 발생하여 질문을 업데이트했습니다. – deerkiller11

+0

괜찮습니다 .. 문제를 해결하려고합니다 .. !! –

관련 문제