我在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 是有变化的,但是最终显示时还是默认为第一张啊???
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 是有变化的,但是最终显示时还是默认为第一张啊???
System.out.println("GralleryProjectAct + 得到的" +listIndex );2、在1中的那个语句,再加一个输出测试判断文件是否不同:
System.out.println("GralleryProjectAct + 文件:" + fList.get(listIndex));
是真的不一样啊,
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
嗯,果然如此,我的是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;
} }
嗯,果然如此,我的是Grallery和ImageSwitcher关联的。就是当Grallery选中时,ImageSwitcher也会选中那张,反之也是所以原因是Grallery好像是在最后生成的,所以即使在ImageSwitcher设置了图片的资源后也会被Grallery修改为默认的第0张.
现在有什么办法令Grallery默认选中的listIndex张啊?