あらかじめ決められたファイルからに写真を追加したいだけですが、GridView
これを行う方法がわかりません。この例から学んだ をAdapter
処理する がありますが、mThumbIds 配列をファイルの画像に設定する方法を理解できませんでした。次のようなものを使用する必要があると思います:の代わりに、間違っている可能性があります。このようなことをするのはこれが初めてで、どんな助けも本当に感謝しています!GridView
ImageView.setImageUri(Uri.fromFile(new File("myPath")));
setImageResource
編集:
現在のコード: (これで NullPointer on:for(File f : dir.listFiles()){
を取得しています: ドキュメントでは、ディレクトリでない場合は null を返すと書かれています。 new File(...) のコードは、ディレクトリの作成に使用するものと同じです。パスが正しいことはわかっています.アプリケーションが起動すると、ユーザーが写真を撮るまでフォルダに写真のないディレクトリが作成されます.これは問題だと思いましたが、ディレクトリに写真があると閉じます.)
public static class HomeFragment extends Fragment{
public HomeFragment(){
}
View rootView;
GridView gridView;
List<Drawable> list;
File dir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "MyAppFolder");
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup contatiner,
Bundle savedInstanceState){
for(File f : dir.listFiles()){
Bitmap original = BitmapFactory.decodeFile(f.getAbsolutePath());
Drawable drawable = new BitmapDrawable(getResources(), original);
list.add(drawable);
}
rootView = inflater.inflate(R.layout.home_layout,
contatiner, false);
gridView = (GridView) rootView.findViewById(R.id.homeGridView);
gridView.setAdapter(new HomeAdapter(getActivity(), list));
return rootView;
}
}
public class HomeAdapter extends BaseAdapter {
private Context mContext;
private List<Drawable> mPictures;
public HomeAdapter(Context c, List<Drawable> list) {
mContext = c;
mPictures = list;
}
public int getCount() {
return mPictures.size();
}
public Object getItem(int position) {
return null;
}
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(110, 110));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageDrawable(mPictures.get(position));
return imageView;
}
}