Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更新RecyclerView中的数据_Java_Android_Android Recyclerview_Adapter - Fatal编程技术网

Java 更新RecyclerView中的数据

Java 更新RecyclerView中的数据,java,android,android-recyclerview,adapter,Java,Android,Android Recyclerview,Adapter,我有FirstscreenActivity,在其中我使用RecyclerView(在这个RecyclerView中显示用户创建的项目的图片),然后用户进入下一个活动,在那里他创建了新项目并在那里添加了图片。当用户返回到FirstScreenActivity时,旧项目会再次下载,然后再下载新项目。 如何使旧项目在更改活动后不再下载一次(这样就不会有重复的项目) 公共类FirstscreenActivity扩展AppCompativeActivity实现RecyclerItemClickListen

我有FirstscreenActivity,在其中我使用RecyclerView(在这个RecyclerView中显示用户创建的项目的图片),然后用户进入下一个活动,在那里他创建了新项目并在那里添加了图片。当用户返回到FirstScreenActivity时,旧项目会再次下载,然后再下载新项目。 如何使旧项目在更改活动后不再下载一次(这样就不会有重复的项目)

公共类FirstscreenActivity扩展AppCompativeActivity实现RecyclerItemClickListener.OnItemClickListener{
私用MyAdapter mAdapter;
私人直线酒店经理;
公共静态字符串mCurrentProject=null;
回收视图列表;
静态文件[]列表文件;
静态文件[]列表文件夹;
静态int newpressed=0;
公共静态ArrayList文件夹=新建ArrayList();
公共静态LruCache-mMemoryCache;
公共静态文件[]listFile2;
public void getFromSdcardFolders(){
File File=新文件(Environment.getExternalStorageDirectory()+
“/音频、录音、图片”、“预览”);
if(file.isDirectory()){
listFolders=file.listFiles();
对于(int i=0;i
适配器的代码:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>` {

    public final Activity context;
    public final ArrayList<Folder> FOLDERS;
    View view;

    public long getItemId(int position) {
        return position;
    }

    @Override
    public int getItemCount() {
        Log.wtf("TAG", "Folders size: " + FOLDERS.size());
        return FOLDERS.size();
    }

    // optimisation of bitmap

    public static int calculateInSampleSize(
            BitmapFactory.Options options, int reqWidth, int reqHeight) {
        // Raw height and width of image
        final int height = options.outHeight;
        final int width = options.outWidth;
        int inSampleSize = 1;

        if (height > reqHeight || width > reqWidth) {

            final int halfHeight = height / 2;
            final int halfWidth = width / 2;

            // Calculate the largest inSampleSize value that is a power of 2 and keeps both
            // height and width larger than the requested height and width.
            while ((halfHeight / inSampleSize) > reqHeight
                    && (halfWidth / inSampleSize) > reqWidth) {
                inSampleSize *= 2;
            }
        }

        return inSampleSize;
    }

    public static Bitmap decodeSampledBitmapFromResource(String path,
                                                         int reqWidth, int reqHeight) {

        // First decode with inJustDecodeBounds=true to check dimensions
        final BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(path, options);

        // Calculate inSampleSize
        options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);

        // Decode bitmap with inSampleSize set
        options.inJustDecodeBounds = false;
        return BitmapFactory.decodeFile(path, options);
    }

    public void loadBitmap(String path, ImageView imageView, int position) {
        final String imageKey = String.valueOf(path);

        Bitmap bitmap = getBitmapFromMemCache(imageKey);
        if (bitmap != null) {
            imageView.setImageBitmap(bitmap);
        } else {

            bitmap = decodeSampledBitmapFromResource(path, 100, 100);
            imageView.setImageBitmap(bitmap);
           // BitmapWorkerTask task = new BitmapWorkerTask(imageView, position);
           // task.execute(path);
        }
    }


    public static class ViewHolder extends RecyclerView.ViewHolder {
        public TextView mTextView;
        public TextView title;
        public ImageView image1;
        ImageView image2;
        ImageView image3;
        ImageView image4;
        ImageView image5;
        TextView slides;

        public ViewHolder(View v) {
            super(v);
            title = (TextView) v.findViewById(R.id.item);
            image1 = (ImageView) v.findViewById(R.id.icon1);
            image2 = (ImageView) v.findViewById(R.id.icon2);
            image3 = (ImageView) v.findViewById(R.id.icon3);
            image4 = (ImageView) v.findViewById(R.id.icon4);
            image5 = (ImageView) v.findViewById(R.id.icon5);
            slides = (TextView) v.findViewById(R.id.textView1);

        }
    }

    public MyAdapter(Activity context, ArrayList<Folder> FOLDERS) {
        this.context = context;
        this.FOLDERS = FOLDERS;
        getItemCount();
    }

    @Override
    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
                                                   int viewType) {

        Log.wtf("TAG", "OnCreateViewHolder works!!!");
        view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.mylist, parent, false);
        ViewHolder vh = new ViewHolder(view);
        return vh;
    }


    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        Folder folder = FOLDERS.get(position);

        holder.image1.setImageResource(R.drawable.placeholder);
        holder.image2.setImageResource(R.drawable.placeholder);
        holder.image3.setImageResource(R.drawable.placeholder);
        holder.image4.setImageResource(R.drawable.placeholder);
        holder.image5.setImageResource(R.drawable.placeholder);

        ArrayList<String> imgs = folder.getPicturelist();

        holder.title.setText(folder.getName());

        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inPreferredConfig = Bitmap.Config.RGB_565;
        options.inSampleSize = 10;


        for (int i = 0; i < 5; i++) {
            switch (i) {
                case 0:
                    if (imgs.size() > i && imgs.size() != 0) {
                        loadBitmap(imgs.get(i), holder.image1, position);
                    } else {
                        holder.image1.setImageBitmap(null);
                        // holder.image1.setImageResource(R.drawable.placeholder);
                    }
                    break;
                case 1:
                    if (imgs.size() > i && imgs.size() != 0) {
                        loadBitmap(imgs.get(i), holder.image2, position);
                    } else {
                        holder.image2.setImageBitmap(null);
                        // holder.image2.setImageResource(R.drawable.placeholder);
                    }
                    break;
                case 2:
                    if (imgs.size() > i && imgs.size() != 0) {
                        loadBitmap(imgs.get(i), holder.image3, position);
                    } else {
                        holder.image3.setImageBitmap(null);
                        // holder.image3.setImageResource(R.drawable.placeholder);
                    }
                    break;
                case 3:
                    if (imgs.size() > i && imgs.size() != 0) {
                        loadBitmap(imgs.get(i), holder.image4, position);
                    } else {
                        holder.image4.setImageBitmap(null);
                        // holder.image4.setImageResource(R.drawable.placeholder);
                    }
                    break;
                case 4:
                    if (imgs.size() > i && imgs.size() != 0) {
                        loadBitmap(imgs.get(i), holder.image5, position);
                    } else {
                        holder.image5.setImageBitmap(null);
                        // holder.image5.setImageResource(R.drawable.placeholder);
                    }
                    break;
            }
        }

        holder.slides.setText("Количество слайдов: " + imgs.size());
        view.setTag(holder);
    }

    public Bitmap getBitmapFromMemCache(String key) {
        return com.example.attracti.audiorecorderpicture.FirstscreenActivity.mMemoryCache.get(key);

    }
}  
公共类MyAdapter扩展了RecyclerView.Adapter`{
公共最终活动背景;
公共最终ArrayList文件夹;
视图;
公共长getItemId(int位置){
返回位置;
}
@凌驾
public int getItemCount(){
Log.wtf(“标记”,“文件夹大小:”+Folders.size());
返回文件夹。大小();
}
//位图的优化
公共静态整数计算示例大小(
BitmapFactory.Options选项、int reqWidth、int reqHeight){
//图像的原始高度和宽度
最终内部高度=options.outHeight;
最终整数宽度=options.outWidth;
int inSampleSize=1;
如果(高度>要求高度| |宽度>要求宽度){
最终int半高=高度/2;
最终整数半宽度=宽度/2;
//算大数
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>` {

    public final Activity context;
    public final ArrayList<Folder> FOLDERS;
    View view;

    public long getItemId(int position) {
        return position;
    }

    @Override
    public int getItemCount() {
        Log.wtf("TAG", "Folders size: " + FOLDERS.size());
        return FOLDERS.size();
    }

    // optimisation of bitmap

    public static int calculateInSampleSize(
            BitmapFactory.Options options, int reqWidth, int reqHeight) {
        // Raw height and width of image
        final int height = options.outHeight;
        final int width = options.outWidth;
        int inSampleSize = 1;

        if (height > reqHeight || width > reqWidth) {

            final int halfHeight = height / 2;
            final int halfWidth = width / 2;

            // Calculate the largest inSampleSize value that is a power of 2 and keeps both
            // height and width larger than the requested height and width.
            while ((halfHeight / inSampleSize) > reqHeight
                    && (halfWidth / inSampleSize) > reqWidth) {
                inSampleSize *= 2;
            }
        }

        return inSampleSize;
    }

    public static Bitmap decodeSampledBitmapFromResource(String path,
                                                         int reqWidth, int reqHeight) {

        // First decode with inJustDecodeBounds=true to check dimensions
        final BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(path, options);

        // Calculate inSampleSize
        options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);

        // Decode bitmap with inSampleSize set
        options.inJustDecodeBounds = false;
        return BitmapFactory.decodeFile(path, options);
    }

    public void loadBitmap(String path, ImageView imageView, int position) {
        final String imageKey = String.valueOf(path);

        Bitmap bitmap = getBitmapFromMemCache(imageKey);
        if (bitmap != null) {
            imageView.setImageBitmap(bitmap);
        } else {

            bitmap = decodeSampledBitmapFromResource(path, 100, 100);
            imageView.setImageBitmap(bitmap);
           // BitmapWorkerTask task = new BitmapWorkerTask(imageView, position);
           // task.execute(path);
        }
    }


    public static class ViewHolder extends RecyclerView.ViewHolder {
        public TextView mTextView;
        public TextView title;
        public ImageView image1;
        ImageView image2;
        ImageView image3;
        ImageView image4;
        ImageView image5;
        TextView slides;

        public ViewHolder(View v) {
            super(v);
            title = (TextView) v.findViewById(R.id.item);
            image1 = (ImageView) v.findViewById(R.id.icon1);
            image2 = (ImageView) v.findViewById(R.id.icon2);
            image3 = (ImageView) v.findViewById(R.id.icon3);
            image4 = (ImageView) v.findViewById(R.id.icon4);
            image5 = (ImageView) v.findViewById(R.id.icon5);
            slides = (TextView) v.findViewById(R.id.textView1);

        }
    }

    public MyAdapter(Activity context, ArrayList<Folder> FOLDERS) {
        this.context = context;
        this.FOLDERS = FOLDERS;
        getItemCount();
    }

    @Override
    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
                                                   int viewType) {

        Log.wtf("TAG", "OnCreateViewHolder works!!!");
        view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.mylist, parent, false);
        ViewHolder vh = new ViewHolder(view);
        return vh;
    }


    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        Folder folder = FOLDERS.get(position);

        holder.image1.setImageResource(R.drawable.placeholder);
        holder.image2.setImageResource(R.drawable.placeholder);
        holder.image3.setImageResource(R.drawable.placeholder);
        holder.image4.setImageResource(R.drawable.placeholder);
        holder.image5.setImageResource(R.drawable.placeholder);

        ArrayList<String> imgs = folder.getPicturelist();

        holder.title.setText(folder.getName());

        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inPreferredConfig = Bitmap.Config.RGB_565;
        options.inSampleSize = 10;


        for (int i = 0; i < 5; i++) {
            switch (i) {
                case 0:
                    if (imgs.size() > i && imgs.size() != 0) {
                        loadBitmap(imgs.get(i), holder.image1, position);
                    } else {
                        holder.image1.setImageBitmap(null);
                        // holder.image1.setImageResource(R.drawable.placeholder);
                    }
                    break;
                case 1:
                    if (imgs.size() > i && imgs.size() != 0) {
                        loadBitmap(imgs.get(i), holder.image2, position);
                    } else {
                        holder.image2.setImageBitmap(null);
                        // holder.image2.setImageResource(R.drawable.placeholder);
                    }
                    break;
                case 2:
                    if (imgs.size() > i && imgs.size() != 0) {
                        loadBitmap(imgs.get(i), holder.image3, position);
                    } else {
                        holder.image3.setImageBitmap(null);
                        // holder.image3.setImageResource(R.drawable.placeholder);
                    }
                    break;
                case 3:
                    if (imgs.size() > i && imgs.size() != 0) {
                        loadBitmap(imgs.get(i), holder.image4, position);
                    } else {
                        holder.image4.setImageBitmap(null);
                        // holder.image4.setImageResource(R.drawable.placeholder);
                    }
                    break;
                case 4:
                    if (imgs.size() > i && imgs.size() != 0) {
                        loadBitmap(imgs.get(i), holder.image5, position);
                    } else {
                        holder.image5.setImageBitmap(null);
                        // holder.image5.setImageResource(R.drawable.placeholder);
                    }
                    break;
            }
        }

        holder.slides.setText("Количество слайдов: " + imgs.size());
        view.setTag(holder);
    }

    public Bitmap getBitmapFromMemCache(String key) {
        return com.example.attracti.audiorecorderpicture.FirstscreenActivity.mMemoryCache.get(key);

    }
}  
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myproject">

    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-feature android:name="android.hardware.camera" />


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar"
        android:name=".model.App"
        >

        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

        <activity android:name=".activities.AudioRecord"
            android:screenOrientation="portrait"
            android:configChanges="orientation|keyboardHidden">
        </activity>
        <activity android:name=".activities.FirstscreenActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".activities.ViewActivity">
    </activity>
    </application>

</manifest>
<activity android:name=".activities.FirstscreenActivity"
          android:launchMode= "singleInstance"
          ...