【问题标题】:java.file.io is not getting resolved outjava.file.io 没有得到解决
【发布时间】:2020-12-21 07:25:00
【问题描述】:

我一直在为自己制作一个视频库,但被困在这里。按照此链接获取一些参考资料,但仍然遇到一些问题:

For making thumbnails for the videos

这是我的代码:

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;
    }
}  }

我遇到的问题在于我的 getView 方法中的 ImageAdapter 类

这些是:

1.在 if(list.get(position).contains(".jpg")) //无法解析包含

2。在位图 = BitmapFactory.decodeFile(list.get(position)); //说Bitmapfacotory的decodeFile(java.lang.string)不能应用到(java.file.io)

附:对于第二个选项,我在从此链接获得参考后尝试这样做但失败了:

Java contradicting behavior resolved

【问题讨论】:

    标签: java android gridview file-io video-gallery


    【解决方案1】:

    试试这个。

    if(list.get(position).contains(".jpg"))
    {
         bitmap = BitmapFactory.decodeFile(list.get(position).toString()); 
    }
    

    list.get(position) 是 File 对象,您需要传递 String 对象,因此只需通过编写 .toString() 将其设为 String。

    【讨论】:

    • 感谢分享,但我的应用程序现在正在停止。我不知道原因,因为 logcat 没有指定错误的原因。你能帮我解决这个问题吗?我的代码很好。但我仍然收到一个未知错误。我按照你的指示做了。 收到错误,它指出尝试在 in.pinelane.myhovi.AddFragment$ImageAdapter.getCount 的空对象引用上调用虚拟方法“int java.util.ArrayList.size()”跨度>
    • @AlokKumar 这是因为您的数组列表为空。请在获取记录前检查空条件。
    • 我做了一些更改后它现在工作正常!
    【解决方案2】:
    1. 包含期望看到与列表项相同的对象类型。如果您想检查文件是否为图像,请阅读:Android: How to check if file is image?
    2. 解码文件需要获取文件 url 而不是文件对象。看这里如何使用它:Bitmapfactory example

    【讨论】:

      猜你喜欢
      • 2013-09-30
      • 2019-07-18
      • 2011-01-14
      • 2022-01-16
      • 2021-05-14
      • 2015-04-03
      • 2014-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多