سلام . من یه مشکل دارم که خوشحال میشم کمکم کنید .
من یه اپ میخوام بنویسم که عکس های دوربین رو نشون بده و برای این کار هم از picasso استفاده کردم . ولی مشکلم اینه که توی امولیتور ارور میده . توی گوشیم که حافظه خارجی نداره درست کار میکنه و توی تبلت بعضی عکس ها رو نشون میده .
سورس برنامه
public class MainActivity extends Activity {GridView gv;
public ArrayList<File> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);list = imageReader(Environment.getExtealStoragePublicDirectory(Environment.DIRECTORY_PICTURES));
gv =(GridView) findViewById(R.id.gridView);
gv.setAdapter(new GridAdapter());gv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {startActivity(new Intent(getApplicationContext(),ViewImageActivity.class).putExtra("img",list.get(i).toString()));
}
});}
class GridAdapter extends BaseAdapter{
public Context context = getApplicationContext();@Override
public int getCount() {
retu list.size();
}@Override
public Object getItem(int i) {
retu list.get(i);
}@Override
public long getItemId(int i) {
retu 0;
}@Override
public View getView(int i, View view, ViewGroup viewGroup) {if(view == null) {
view = getLayoutInflater().inflate(R.layout.single_grid, viewGroup, false);
}
ImageView iv = (ImageView) view.findViewById(R.id.imageView);if(list.get(i).exists()){
Picasso.with(context)
.load(list.get(i))
.resize(150,150)
.centerCrop()
.into(iv);
}else{
Picasso.with(context).cancelRequest(iv);
}
retu view;
}
}
ArrayList<File> imageReader(File root){
ArrayList<File> a=new ArrayList<>();
File[] files = root.listFiles();
for(int i=0; i < files.length; i++){if(files[i].isDirectory()){
a.addAll(imageReader(files[i]));
}
else{
if(files[i].getName().endsWith(".jpg")){
a.add(files[i]);
}
}
}
retu a;
}
اروری که میده
برچسب:
نویسنده: محمد رضا جوادیان