无法解析java.file.io
我一直在努力为自己制作一个视频画廊,却被困在这里。以下链接提供了一些参考资料,但仍然存在一些问题: 这是我的密码:无法解析java.file.io,java,android,gridview,file-io,video-gallery,Java,Android,Gridview,File Io,Video Gallery,我一直在努力为自己制作一个视频画廊,却被困在这里。以下链接提供了一些参考资料,但仍然存在一些问题: 这是我的密码: public class AddFragment extends Fragment { private ImageButton imageButton; private GridView gridView; private File files; ArrayList<File> list; public AddFragment() { // Requi
public class AddFragment extends Fragment {
private ImageButton imageButton;
private GridView gridView;
private File files;
ArrayList<File> list;
public AddFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_add, container, false);
imageButton = (ImageButton) view.findViewById(R.id.gotoButton);
gridView = (GridView) view.findViewById(R.id.grid_view);
gridView.setAdapter(new ImageAdapter(getContext()));
list = videoReader(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES));
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
//for making the button visible as ssonas the item gets selected
imageButton.setVisibility(view.VISIBLE);
}
});
return view;
}
ArrayList<File> videoReader(File root) {
ArrayList<File> arrayList = new ArrayList<>();
File[] file = root.listFiles();
for(int i=0;i<file.length;i++){
if(file[i].isDirectory()){
}else{
if(file[i].getName().endsWith(".mp4")){
arrayList.add(file[i]);
}
}
}
return arrayList;
}
public class ImageAdapter extends BaseAdapter{
private Bitmap bitmap;
private final Context context;
private ImageAdapter(Context c){
context = c;
}
//for the video numbers
@Override
public int getCount() {
return list.size();
}
//for getting the video items position vise
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup viewGroup) {
ImageView picturesView;
if (convertView == null) {
picturesView = new ImageView(context);
if(list.get(position).contains(".jpg"))
{
bitmap = BitmapFactory.decodeFile(list.get(position)); //Creation of Thumbnail of image
}
else if(list.get(position).contains(".mp4"))
{
bitmap = ThumbnailUtils.createVideoThumbnail(list.get(position), 0); //Creation of Thumbnail of video
}
picturesView.setScaleType(ImageView.ScaleType.FIT_CENTER);
picturesView.setPadding(8, 8, 8, 8);
picturesView.setLayoutParams(new GridView.LayoutParams(100, 100));
}
else
{
picturesView = (ImageView)convertView;
}
return picturesView;
}
} }
public类AddFragment扩展了Fragment{
私有图像按钮;
私有GridView GridView;
私人档案;
数组列表;
公共AddFragment(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图=充气机。充气(R.layout.fragment\u add,container,false);
imageButton=(imageButton)view.findViewById(R.id.gotoButton);
gridView=(gridView)view.findViewById(R.id.grid\u视图);
setAdapter(新的ImageAdapter(getContext());
list=videoReader(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES));
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共虚线单击(AdapterView AdapterView,视图视图,内部位置,长l){
//为了使按钮显示为ssonas,将选中该项
imageButton.setVisibility(view.VISIBLE);
}
});
返回视图;
}
ArrayList视频阅读器(文件根目录){
ArrayList ArrayList=新的ArrayList();
File[]File=root.listFiles();
对于(inti=0;i试试这个
if(list.get(position).contains(".jpg"))
{
bitmap = BitmapFactory.decodeFile(list.get(position).toString());
}
list.get(position)是文件对象,您需要传递字符串对象,所以只需通过写入.toString()使其成为字符串即可。试试这个
if(list.get(position).contains(".jpg"))
{
bitmap = BitmapFactory.decodeFile(list.get(position).toString());
}
list.get(position)是文件对象,您需要传递字符串对象,所以只需通过写入.toString()使其成为字符串即可
包含希望看到与列表项相同的对象类型。如果要检查文件是否为图像,请阅读以下内容:
解码文件需要获取文件url而不是文件对象。请参见此处的使用方法:
包含希望看到与列表项相同的对象类型。如果要检查文件是否为图像,请阅读以下内容:
解码文件需要获取文件url而不是文件对象。请参见此处的使用方法:
感谢您的分享,但我的应用程序现在正在停止。我不知道原因,因为logcat没有指定错误的原因。请您在这方面帮助我。我的代码很好。但我仍然收到一个未知错误。我按照您的说明执行了该操作。收到错误,它表明试图调用虚拟方法“int java.util.ArrayList”.size()'在in.pinelane.myhovi.AddFragment$ImageAdapter处的空对象引用上。getCount@AlokKumar这是因为您的arraylist为空。请在获取记录之前检查空条件。我做了一些更改后,它现在工作正常!感谢分享,但我的应用程序现在正在停止。我不知道原因,因为logcat没有指定错误的原因。你能在这方面帮助我吗。我的代码很好。但我仍然收到一个未知错误。我是按照你的说明执行的。收到错误,它表明试图调用虚拟方法“int java.util.ArrayList.size()'在in.pinelane.myhovi.AddFragment$ImageAdapter处的空对象引用上。getCount@AlokKumar这是因为您的arraylist为空。请在获取记录之前检查空条件。我做了一些更改后,它现在工作正常!