我在GridView中选择了图片转到ImageView中显示,为什么还总是显示List中的第一张啊?(我使用BaseAdapter)
if (!fList.isEmpty()) {
listIndex = intent.getIntExtra("listIndex", 0);
System.out.println("GralleryProjectAct + 得到的" +listIndex );
BitmapDrawable bdraw = new BitmapDrawable(decodeFile(new File(fList.get(listIndex))));
GralleryProjectAct.this.switcher.setImageDrawable(bdraw);
}
测试的时候listIndex 是有变化的,但是最终显示时还是默认为第一张啊???

解决方案 »

  1.   

    1、判断这里输出的listIndex的值是否不同;
    System.out.println("GralleryProjectAct + 得到的" +listIndex );2、在1中的那个语句,再加一个输出测试判断文件是否不同:
    System.out.println("GralleryProjectAct + 文件:" + fList.get(listIndex));
     
     
      

  2.   


    是真的不一样啊,
    5-11 11:54:15.842: INFO/System.out(271): GralleryProjectAct + 送出去的4
    05-11 11:54:15.952: INFO/System.out(271): GralleryProjectAct + 得到的4
    05-11 11:54:16.073: INFO/System.out(271): 第0张/mnt/sdcard/DCIM/.thumbnails/1336281409827.jpg
    05-11 11:54:16.073: INFO/System.out(271): 第listIndex张/mnt/sdcard/DCIM/.thumbnails/1336281408950.jpg
      

  3.   

    把BitmapDrawable bdraw = new BitmapDrawable(decodeFile(new File(fList.get(listIndex))));这句改一下BitmapDrawable bdraw = new BitmapDrawable(decodeFile(new File("/mnt/sdcard/DCIM/.thumbnails/1336281408950.jpg")));然后调试看一下效果。
     
      

  4.   

    说明问题不是出在这个地方噢,检查看看哪里的代码才是更新ImageView的。
      

  5.   


    嗯,果然如此,我的是Grallery和ImageSwitcher关联的。就是当Grallery选中时,ImageSwitcher也会选中那张,反之也是所以原因是Grallery好像是在最后生成的,所以即使在ImageSwitcher设置了图片的资源后也会被Grallery修改为默认的第0张我的代码如下public class GralleryProjectAct extends Activity {
    private Gallery grallery = null;
    private ImageSwitcher switcher = null;
    private List<String> fList = new ArrayList<String>();//这是文件的路径
    private GestureOverlayView gesture = null;
    private GestureLibrary lib = null;
    private boolean load = false;
    private int listIndex = 0;
    private String path = null; @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.setContentView(R.layout.gallerylayout);
    this.grallery = (Gallery) super.findViewById(R.id.mygallery);
    lib = GestureLibraries.fromRawResource(this, R.raw.gestures);
    this.gesture = (GestureOverlayView) super.findViewById(R.id.gesture);
    this.load = lib.load();
    Intent intent = this.getIntent();
    switcher = (ImageSwitcher) super.findViewById(R.id.myimageswitcher);
    switcher.setFactory(new Mtfactoyrer());
    //switcher.setInAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_in));  
    //switcher.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));   path = intent.getStringExtra("path");
    File[] fs = new File(path).listFiles();// 这里开始修改
    // 开始寻找图片
    for (int i = 0; i < fs.length; i++) {
    findImage(fs[i]);
    }

    // 往grallery里面添加图片
    this.grallery.setAdapter(new MyGralleryAdapter(this, fList));
    gesture.setGestureVisible(false);
    gesture.addOnGesturePerformedListener(new LeftGestureListener());
    switcher.setOnClickListener(new MyGalleryOnClickListener());
    grallery.setOnItemSelectedListener(new MyOnItemClickListener());
    if (!fList.isEmpty()) {
    listIndex = intent.getIntExtra("listIndex", 0);

    BitmapDrawable bdraw = new BitmapDrawable(decodeFile(new File(fList.get(listIndex))));
    GralleryProjectAct.this.switcher.setImageDrawable(bdraw);
    }
    super.registerForContextMenu(switcher);
    }
    private class MyOnItemClickListener implements OnItemSelectedListener { @Override
    public void onItemSelected(AdapterView<?> parent, View view,
    int position, long id) {
    listIndex = position;

    //BitmapDrawable bdraw = new BitmapDrawable(BitmapFactory.decodeFile(fList.get(listIndex)));
    BitmapDrawable bdraw = new BitmapDrawable(decodeFile(new File(fList.get(listIndex))));
    GralleryProjectAct.this.switcher.setImageDrawable(bdraw);
    } @Override
    public void onNothingSelected(AdapterView<?> parent) { }
    } private class MyGalleryOnClickListener implements View.OnClickListener { @Override
    public void onClick(View v) {
    if (GralleryProjectAct.this.grallery.getVisibility() == android.view.View.VISIBLE) {
    GralleryProjectAct.this.grallery
    .setVisibility(android.view.View.INVISIBLE);
    } else {
    GralleryProjectAct.this.grallery
    .setVisibility(android.view.View.VISIBLE);
    }
    }
    } private class LeftGestureListener implements OnGesturePerformedListener { @Override
    public void onGesturePerformed(GestureOverlayView overlay,
    Gesture gesture) {
    if (load == true) {
    ArrayList<Prediction> perdictions = lib.recognize(gesture);
    Prediction prediction = perdictions.get(0);
    if (prediction.score >= 1) {
    if (prediction.name.equals("leftmove")) { if (listIndex < fList.size() - 1) {
    BitmapDrawable bdraw = new BitmapDrawable(decodeFile(new File(fList.get(++listIndex))));
    GralleryProjectAct.this.switcher.setImageDrawable(bdraw);

    GralleryProjectAct.this.grallery
    .setSelection(listIndex); } else {
    Toast.makeText(GralleryProjectAct.this, "这是最后一张",
    Toast.LENGTH_SHORT).show();
    }
    } else if (prediction.name.equals("rightmove")) {
    if (listIndex > 0) {
    //BitmapDrawable bdraw = new BitmapDrawable(BitmapFactory.decodeFile(fList.get(--listIndex)));
    BitmapDrawable bdraw = new BitmapDrawable(decodeFile(new File(fList.get(--listIndex))));
    GralleryProjectAct.this.switcher.setImageDrawable(bdraw);
    GralleryProjectAct.this.grallery
    .setSelection(listIndex);
    } else {
    Toast.makeText(GralleryProjectAct.this, "这是第一张",
    Toast.LENGTH_SHORT).show();
    }
    }
    }
    }
    } } private class Mtfactoyrer implements ViewFactory { @Override
    public View makeView() {
    //这里可以对过大的图片进行处理下
    ImageView ima = new ImageView(GralleryProjectAct.this);
    ima.setScaleType(ImageView.ScaleType.CENTER);
    ima.setLayoutParams(new ImageSwitcher.LayoutParams(
    LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    return ima;
    } }
      

  6.   


    嗯,果然如此,我的是Grallery和ImageSwitcher关联的。就是当Grallery选中时,ImageSwitcher也会选中那张,反之也是所以原因是Grallery好像是在最后生成的,所以即使在ImageSwitcher设置了图片的资源后也会被Grallery修改为默认的第0张.
    现在有什么办法令Grallery默认选中的listIndex张啊?