2014-03-13 2 views
0

프로그래밍 방식으로 회 전자 만들기 회 전자 완벽하게 드롭 다운 표시하지만 개미 항목을 클릭하면 표시되지 않습니다. 디버그 할 때 토스트 메시지가 회 전자 클릭 방식으로 이동하지 않습니다 내 코드가 잘못 되었습니까? 회 전자 항목은 표시되지만 클릭 이벤트는 무엇이 잘못 되었습니까?프로그래밍 방식으로 클릭하여 회 전자 작업 만들기

public class MainActivity extends Activity { 
Spinner spinner; 

String[] strings = { "Power Options", "Power off", "Restart" }; 

String[] subs = { "", "Shut phone down", "Close all apps and restart phone" }; 

int arr_images[] = { R.drawable.ic_launcher, R.drawable.ic_launcher, 
     R.drawable.ic_launcher }; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

     spinner = new Spinner(this); 
    spinner.setAdapter(new MyAdapter(this, R.layout.row, strings)); 

    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
    { 

     public void onItemSelected(AdapterView<?> adapterView, View view, 
       int i, long l) { 
      // TODO Auto-generated method stub 

      if (i == 1) { 

    Toast.makeText(MainActivity.this, "PowerOff Perform", 
         Toast.LENGTH_SHORT).show(); 
      } 

      if (i == 2) { 

       Toast.makeText(MainActivity.this, "Reboot Perform", 
         Toast.LENGTH_SHORT).show(); 
      } 
     } 

     // If no option selected 
     public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub 
     } 
    }); 
} 

public class MyAdapter extends ArrayAdapter<String> { 

    public MyAdapter(Context context, int textViewResourceId, 
      String[] objects) { 
     super(context, textViewResourceId, objects); 
    } 

    @Override 
    public View getDropDownView(int position, View convertView, 
      ViewGroup parent) { 

     return getCustomView(position, convertView, parent); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     return getCustomView(position, convertView, parent); 
    } 

    public View getCustomView(int position, View convertView, 
      ViewGroup parent) { 

     LayoutInflater inflater = getLayoutInflater(); 
     View row = inflater.inflate(R.layout.row, parent, false); 
     TextView label = (TextView) row.findViewById(R.id.company); 
     label.setText(strings[position]); 

     TextView sub = (TextView) row.findViewById(R.id.sub); 
     sub.setText(subs[position]); 

     ImageView icon = (ImageView) row.findViewById(R.id.image); 
     icon.setImageResource(arr_images[position]); 

     return row; 
    } 
} 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (KeyEvent.KEYCODE_BACK == event.getKeyCode()) { 

     spinner.performClick(); 

     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+1

형식 코드의 사용하려고, 내가 레이아웃 spiner이 스피너처럼 잘 작동이 = (회 전자) findViewById를 (R이다 사용하는 경우 –

답변

0

어쩌면 setOnItemSelectedListener 대신 setOnItemClickListener를 사용 하시겠습니까?

spinner.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(final AdapterView<?> arg0, final View arg1, final int arg2, final long arg3) { 
     } 
    }); 

대신

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
    { 

     public void onItemSelected(AdapterView<?> adapterView, View view, 
       int i, long l) {... 
+0

를 읽어 불가능합니다. id.spinner1); 그때 같은 코드가 잘 작동 – user3416078

+0

내가 내 대답을 편집하면 그게 도움이되는지 알려주세요 – androidseb

+0

내 회 전자가 내 회 전자와 같은 레이아웃 및 칼날에 회 전자를 사용하면 완벽하게 작동한다고 말함 = (회 전자) findViewById (R.id.spinner1); 내가 spinner = new Spinner (this)와 같이 프로그램 방식으로 스피너를 사용할 때; 회 전자가 클릭 이벤트를 수행하지 않습니다. – user3416078

관련 문제