2012-08-12 29 views
52

Làm cách nào để bạn điền một trình rút gọn từ mã java theo lập trình?Android: Điền Spinner từ mã Java theo lập trình

Tôi có một spinner trong cách bố trí như thế này:

<Spinner 
    android:id="@+id/consultation_deseases" 
    android:layout_width="@dimen/bigSpinnerWidth" 
    android:layout_height="@dimen/bigSpinnerHeight" 
    android:prompt="@string/disease_prompt" /> 

Với mã java Tôi cần phải tạo ra các bộ chuyển đổi và thêm các mục.

Trả lời

151
// you need to have a list of data that you want the spinner to display 
List<String> spinnerArray = new ArrayList<String>(); 
spinnerArray.add("item1"); 
spinnerArray.add("item2"); 

ArrayAdapter<String> adapter = new ArrayAdapter<String>(
    this, android.R.layout.simple_spinner_item, spinnerArray); 

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
Spinner sItems = (Spinner) findViewById(R.id.spinner1); 
sItems.setAdapter(adapter); 

cũng để tìm hiểu những gì đang được chọn, bạn có thể làm một cái gì đó như thế này

String selected = sItems.getSelectedItem().toString(); 
if (selected.equals("what ever the option was")) { 
} 
13

Dưới đây là một ví dụ đầy đủ theo chương trình:

  • init một Spinner.
  • điền dữ liệu đó qua một Danh sách chuỗi.
  • đổi kích thước Spinner và thêm nó vào Chế độ xem của tôi.
  • định dạng phông chữ Spinner (cỡ chữ, màu, đệm).
  • xóa Spinner.
  • thêm giá trị mới vào Spinner.
  • vẽ lại Spinner.

Tôi đang sử dụng các lớp sau vars:

Spinner varSpinner; 
List<String> varSpinnerData; 

float varScaleX; 
float varScaleY;  

A - Init và làm cho Spinner (varRoot là một con trỏ đến Hoạt động chính của tôi):

public void renderSpinner() { 


    List<String> myArraySpinner = new ArrayList<String>(); 

    myArraySpinner.add("red"); 
    myArraySpinner.add("green"); 
    myArraySpinner.add("blue");  

    varSpinnerData = myArraySpinner; 

    Spinner mySpinner = new Spinner(varRoot);    

    varSpinner = mySpinner; 

    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(varRoot, android.R.layout.simple_spinner_item, myArraySpinner); 
    spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // The drop down vieww 
    mySpinner.setAdapter(spinnerArrayAdapter); 

B - Thay đổi kích thước và Thêm Spinner vào chế độ xem của tôi:

FrameLayout.LayoutParams myParamsLayout = new FrameLayout.LayoutParams(
      FrameLayout.LayoutParams.MATCH_PARENT, 
      FrameLayout.LayoutParams.WRAP_CONTENT); 
    myParamsLayout.gravity = Gravity.NO_GRAVITY;    

    myParamsLayout.leftMargin = (int) (100 * varScaleX); 
    myParamsLayout.topMargin = (int) (350 * varScaleY);    
    myParamsLayout.width = (int) (300 * varScaleX);; 
    myParamsLayout.height = (int) (60 * varScaleY);; 


    varLayoutECommerce_Dialogue.addView(mySpinner, myParamsLayout); 

C - Làm cho Clic k xử lý và sử dụng điều này để thiết lập phông chữ.

mySpinner.setOnItemSelectedListener(new OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int myPosition, long myID) { 

      Log.i("renderSpinner -> ", "onItemSelected: " + myPosition + "/" + myID); 

      ((TextView) parentView.getChildAt(0)).setTextColor(Color.GREEN); 
      ((TextView) parentView.getChildAt(0)).setTextSize(TypedValue.COMPLEX_UNIT_PX, (int) (varScaleY * 22.0f)); 
      ((TextView) parentView.getChildAt(0)).setPadding(1,1,1,1); 


     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parentView) { 
      // your code here 
     } 

    }); 

} 

D - Cập nhật Spinner với dữ liệu mới:

private void updateInitSpinners(){ 

    String mySelected = varSpinner.getSelectedItem().toString(); 
    Log.i("TPRenderECommerce_Dialogue -> ", "updateInitSpinners -> mySelected: " + mySelected); 


    varSpinnerData.clear(); 

    varSpinnerData.add("Hello World"); 
    varSpinnerData.add("Hello World 2"); 

    ((BaseAdapter) varSpinner.getAdapter()).notifyDataSetChanged(); 
    varSpinner.invalidate(); 
    varSpinner.setSelection(1); 

} 

}

gì tôi đã không thể giải quyết trong updateInitSpinners, là để làm varSpinner.setSelection (0); và tự động kích hoạt cài đặt phông chữ tùy chỉnh.

CẬP NHẬT:

Giải pháp "xấu xí" này giải quyết varSpinner.setSelection (0); vấn đề, nhưng tôi không phải là rất hài lòng với nó:

private void updateInitSpinners(){ 

    String mySelected = varSpinner.getSelectedItem().toString(); 
    Log.i("TPRenderECommerce_Dialogue -> ", "updateInitSpinners -> mySelected: " + mySelected); 


    varSpinnerData.clear(); 

    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(varRoot, android.R.layout.simple_spinner_item, varSpinnerData); 
    spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    varSpinner.setAdapter(spinnerArrayAdapter); 


    varSpinnerData.add("Hello World"); 
    varSpinnerData.add("Hello World 2"); 

    ((BaseAdapter) varSpinner.getAdapter()).notifyDataSetChanged(); 
    varSpinner.invalidate(); 
    varSpinner.setSelection(0); 

} 

}

Hope this helps ......

Các vấn đề liên quan