2012-05-24 3 views
0

내 애플리케이션에서 두 개의 선택된 라디오 버튼 중 하나를 기반으로 이미지 전환기 콘텐츠를 선택하려고합니다. 라디오 버튼을 클릭 할 때 응용 프로그램에서 원하는 옵션을 선택하지 않고 마지막으로 응용 프로그램이 충돌합니다.Android : 새로 고침 이미지 전환기 내용 radioButton 선택 사항

큰 문제는 내가 선택한 라디오 버튼을 기반으로 swicher에 대한 이미지를 들고 배열을 해방하고 싶습니다.

또한 이미지 참조가있는 두 개의 배열이 있습니다. 갤러리 내부의 모든 배열을 삭제하고 참조 중 하나를 추가하고 싶습니다. 여기 내 코드가있다.

public void onCheckedChanged(RadioGroup group, int checkedId) { 

    // TODO Auto-generated method stub 

    //check which id is selected 

    radioCheckedId= checkedId; 


    //radio button checked 

    switch(radioCheckedId){ 

     case R.id.radBtnAccident: 

삭제 // 모든 배열 경우 (pics.length> 0) {

   for (int arr=0;arr<pics.length;arr++){ 

        pics[arr]=null; 

       } 
      } 

      //populates array 

      pics = new Integer[]{ R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, 
            R.drawable.e,R.drawable.exit, R.drawable.plan, R.drawable.icon, R.drawable.plan }; 

      chooseImgArray(pics); 

     break; 

     case R.id.radBtnOthers: 

      //populates other array 

      pics = new Integer[]{R.drawable.exit, R.drawable.plan, 

R.drawable.icon, R.drawable.plan, R.drawable.c}; 예 용

  chooseImgArray(pics); 
     break; 

    default: 

    break; 


    } 

} 

public void chooseImgArray(final Integer[] array){ 


    iSwitcher = (ImageSwitcher) findViewById(R.id.ImgSwith); 

    iSwitcher.setFactory(this); 
    iSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_in)); 
    iSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out)); 

    gallery = (Gallery) findViewById(R.id.galImage); 

    gallery.setAdapter(new ImageAdapter(this)); 

    gallery.setOnItemClickListener(new OnItemClickListener() { 

     public void onItemClick(AdapterView<?> arg0, View arg1, int count,long arg3) { 
      iSwitcher.setImageResource(array[count]); 

     } 

    }); 




} 

답변

0
 
I put Example code for ImageSwitcher with Gallery Check it. 
it is usefull to u. 
public class TestActivity extends Activity implements ViewFactory, 
     OnItemSelectedListener { 

    private Gallery gallery; 
    private ImageSwitcher iSwitcher; 
    private RadioGroup rdgSelection; 
    private Boolean flag = true; 

    private Integer[] Array1 = { R.drawable.arrow, R.drawable.arrow1, 
      R.drawable.arrow2, R.drawable.arrow3 }; 
    private Integer[] Array2 = { R.drawable.camera, R.drawable.camera1, 
      R.drawable.camera2, R.drawable.camera3 }; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     gallery = (Gallery) findViewById(R.id.gallery); 
     iSwitcher = (ImageSwitcher) findViewById(R.id.imgSwitcher); 
     rdgSelection = (RadioGroup) findViewById(R.id.rdgSelection); 

     iSwitcher.setFactory(this); 
     rdgSelection.check(rdgSelection.getChildAt(
       rdgSelection.getChildCount() - 1).getId()); 

     if (rdgSelection.getCheckedRadioButtonId() == R.id.rdb1) { 
      flag = true; 
      gallery.setAdapter(new ImageAdapter(TestActivity.this)); 
     } else { 
      flag = false; 
      gallery.setAdapter(new ImageAdapter(TestActivity.this)); 
     } 
     rdgSelection.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(RadioGroup group, int checkedId) { 
       gallery.setAdapter(new ImageAdapter(TestActivity.this)); 
       if (rdgSelection.getCheckedRadioButtonId() == R.id.rdb1) 
        flag = true; 
       else 
        flag = false; 
      } 
     }); 
     gallery.setOnItemSelectedListener(this); 

    } 

    public class ImageAdapter extends BaseAdapter { 
     public ImageAdapter(Context c) { 
      mContext = c; 
     } 

     public int getCount() { 
      if (flag) 
       return Array1.length; 
      else 
       return Array2.length; 
     } 

     public Object getItem(int position) { 
      return position; 
     } 

     public long getItemId(int position) { 
      return position; 
     } 

     public View getView(int position, View convertView, ViewGroup parent) { 
      ImageView i = new ImageView(mContext); 
      if (flag) 
       i.setImageResource(Array1[position]); 
      else 
       i.setImageResource(Array2[position]); 
      i.setAdjustViewBounds(true); 
      i.setLayoutParams(new Gallery.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
      return i; 
     } 

     private Context mContext; 

    } 

    @Override 
    public View makeView() { 
     ImageView i = new ImageView(this); 
     i.setBackgroundColor(0xFF000000); 
     i.setScaleType(ImageView.ScaleType.FIT_CENTER); 
     i.setLayoutParams(new ImageSwitcher.LayoutParams(
       LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 
     return i; 
    } 

    @Override 
    public void onItemSelected(AdapterView<?> arg0, View v, int position, 
      long id) { 
     if (flag) 
      iSwitcher.setImageResource(Array1[position]); 
     else 
      iSwitcher.setImageResource(Array2[position]); 
    } 

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

    } 

} 
+0

감사하지만 애플리케이션 – GrimJov

+0

W/dalvikvm (321) 충돌 : 나 프로젝트 코드를 상기 검사 스레드 (= 기 0x4001d800)를 캐치되지 제외 종료 – GrimJov

+0

: threadid = 1 그것의 일 벌금은 아무 오류도 없다. 내 에뮬레이터에서 프로젝트를 완전히 실행하십시오. plz .. 그것을 다시 확인하십시오. –