所以我有一個Gridview和ImageAdapter類。圖像全部從文件夾抓取,然後填充到網格視圖中。然後我有另一個類,點擊時顯示完整的圖像。然而,無論何時有人點擊圖像ImageAdapter必須再次調用,並且所有圖像都需要重新填充到我的變量中,然後我才挑選出需要的圖像。這是非常低效的,但我不知道如何去做。有效率問題。需要在類之間傳遞數據
這是我的代碼。
主類(在這種情況下,我的最愛)與網格視圖
public class Favorites extends Activity {
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.favorites);
GridView gridview = (GridView) findViewById(R.id.favgridview);
gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent,View v, int position, long id){
Intent i = new Intent(getApplicationContext(), FullImageActivity.class);
i.putExtra("id", position);
startActivity(i);
}
});
}
}
我ImageAdapter類,你可以看到我所有的圖像作爲位圖加載到一個數組。
public class ImageAdapter extends BaseAdapter{
private Context mContext;
private Bitmap[]mis_fotos;
public ImageAdapter(Context c){
mContext = c;
}
public int getCount(){
get_images();
return mis_fotos.length;
}
public Bitmap getItem(int position){
get_images();
return mis_fotos[position];
}
public long getItemId(int position){
return 0;
}
public View getView(int position, View convertView, ViewGroup parent){
ImageView imageView;
if (convertView == null){
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85,85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageBitmap(mis_fotos[position]);
return imageView;
}
private void get_images(){
String dirPath = mContext.getFilesDir().getAbsolutePath() + File.separator + "favorites";
File directory = new File(dirPath);
File[] archivos = directory.listFiles();
mis_fotos = new Bitmap[archivos.length];
for (int cont=0; cont<archivos.length;cont++){
File imgFile = new File(archivos[cont].toString());
mis_fotos[cont] = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
}
}
}
,最後我的全部圖像類
public class FullImageActivity extends Activity {
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.full_image);
Intent i = getIntent();
int position = i.getExtras().getInt("id");
ImageAdapter imageAdapter = new ImageAdapter(this);
ImageView imageView = (ImageView) findViewById(R.id.full_image_view);
imageView.setImageBitmap(imageAdapter.getItem(position));
}
}
所以你可以看到,當我使用完整的圖像,我只能是通過在GridView類位置的整數。然後我必須再次調用ImageAdapter類中的get_images(),並重新重新填充數組。
當點擊圖像時,我需要將單個圖像從gridview傳遞到fullimage類。我知道有一個更簡單,更有效的方法來做到這一點。我希望這是有道理的。
+1好答案。 – 2012-08-08 05:27:34
謝謝!位圖位圖=(位圖)parent.getAdapter()。getItem(position);'一段代碼對我來說是神奇的。是我需要的。現在我可以訪問該課程,它開啓了各種可能性。我得到它的工作,但我改變了我的代碼了一下。我沒有加載和位圖數組,而是一組文件名,然後我只是根據文件名設置圖像並在活動之間傳遞文件名。我認爲現在工作得很好。謝謝您的幫助! – Dan 2012-08-08 13:53:48