Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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中的ActivityResult问题_Java_Android_Android Recyclerview - Fatal编程技术网

Java recyclerview中的ActivityResult问题

Java recyclerview中的ActivityResult问题,java,android,android-recyclerview,Java,Android,Android Recyclerview,我想从gallery中添加图像并添加到arraylist,然后将它们显示到recyclerview中 但无法在适配器中使用onactivityresult-_- 我使用Fishbun从gallery添加图像,但当我单击ok时,图像不会显示在recyclerview中 我是android新手,不知道怎么做 以下是我的主要活动: package com.example.myapuuuplication; import androidx.annotation.Nullable; import andr

我想从gallery中添加图像并添加到arraylist,然后将它们显示到recyclerview中

但无法在适配器中使用onactivityresult-_-

我使用Fishbun从gallery添加图像,但当我单击ok时,图像不会显示在recyclerview中

我是android新手,不知道怎么做

以下是我的主要活动:

package com.example.myapuuuplication;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import com.sangcomz.fishbun.FishBun;
import com.sangcomz.fishbun.adapter.image.impl.GlideAdapter;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    Adapter adapter = new Adapter();
    List<Modell> uris = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        RecyclerView rv = findViewById(R.id.rv);
        rv.setAdapter(adapter);
        rv.setLayoutManager(new LinearLayoutManager(this,RecyclerView.HORIZONTAL,false));

        Button btn = findViewById(R.id.button);
        btn
                .setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        openpicker();

                    }
                });
    }

    private void openpicker() {
            FishBun.with(this).setImageAdapter(new GlideAdapter())
                    .setMaxCount(3)
                    .setActionBarColor(Color.parseColor("#5D4037"))
                    .startAlbum();
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            case FishBun.FISHBUN_REQUEST_CODE:
                if (resultCode == RESULT_OK) {
                    uris = data.getParcelableArrayListExtra(FishBun.INTENT_PATH);
                    adapter.setUris(uris);
                    break;
                }
        }
    }

}
package com.example.myapuUplication;
导入androidx.annotation.Nullable;
导入androidx.appcompat.app.appcompat活动;
导入androidx.recyclerview.widget.LinearLayoutManager;
导入androidx.recyclerview.widget.recyclerview;
导入android.content.Intent;
导入android.graphics.Color;
导入android.net.Uri;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.Button;
导入android.widget.ImageView;
导入android.widget.Toast;
导入com.sangcomz.fishbun.fishbun;
导入com.sangcomz.fishbun.adapter.image.impl.GlideAdapter;
导入java.util.ArrayList;
导入java.util.List;
公共类MainActivity扩展了AppCompatActivity{
适配器=新适配器();
List uris=new ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView rv=findViewById(R.id.rv);
rv.设置适配器(适配器);
rv.setLayoutManager(新的LinearLayoutManager(此,RecyclerView.HORIZONTAL,false));
按钮btn=findViewById(R.id.Button);
btn
.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
openpicker();
}
});
}
私有void openpicker(){
FishBun.with(this).setImageAdapter(新GlideAdapter())
.setMaxCount(3)
.setActionBarColor(Color.parseColor(#5D4037”))
.startAlbum();
}
@凌驾
activityresult上的公共void(int-requestCode、int-resultCode、@Nullable-Intent-data){
super.onActivityResult(请求代码、结果代码、数据);
开关(请求代码){
案例FishBun.FishBun请求代码:
if(resultCode==RESULT\u OK){
uris=data.getParcelableArrayListExtra(FishBun.INTENT\u路径);
适配器.setUris(uris);
打破
}
}
}
}
适配器:


package com.example.myapuuuplication;
import android.content.Intent;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.sangcomz.fishbun.FishBun;
import java.util.ArrayList;
import java.util.List;
import static android.app.Activity.RESULT_OK;

public class Adapter extends RecyclerView.Adapter<Adapter.VH> {

    List<Modell> uris = new ArrayList<>();
    public void setUris(List<Modell> uris) {
        this.uris = uris;
    }

    @NonNull
    @Override
    public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.model,parent,false);
        return new VH(view);
    }

    @Override
    public void onBindViewHolder(@NonNull VH holder, int position) {
        Modell modell = uris.get(position);
        VH vh = holder;
        vh.img.setImageURI(modell.getImg());
    }

    @Override
    public int getItemCount() {
        return uris.size();
    }

    public class VH extends RecyclerView.ViewHolder{
        ImageView img;
        public VH(@NonNull View itemView) {
            super(itemView);
            img = itemView.findViewById(R.id.imgmodel);
        }
    }
}


包com.example.myapuUplication;
导入android.content.Intent;
导入android.net.Uri;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ImageView;
导入androidx.annotation.NonNull;
导入androidx.recyclerview.widget.recyclerview;
导入com.sangcomz.fishbun.fishbun;
导入java.util.ArrayList;
导入java.util.List;
导入静态android.app.Activity.RESULT\u确定;
公共类适配器扩展了RecyclerView.Adapter{
List uris=new ArrayList();
公共无效设置URI(列表URI){
this.uris=uris;
}
@非空
@凌驾
公共VH onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
View=LayoutInflater.from(parent.getContext()).flate(R.layout.model,parent,false);
返回新的VH(视图);
}
@凌驾
BindViewHolder上的公共无效(@非空VH holder,内部位置){
Modell=uris.get(位置);
VH=支架;
vh.img.setImageURI(model.getImg());
}
@凌驾
public int getItemCount(){
返回uris.size();
}
公共类VH扩展了RecyclerView.ViewHolder{
图像视图img;
公共VH(@NonNull View itemView){
超级(项目视图);
img=itemView.findviewbyd(R.id.imgmodel);
}
}
}
和型号:

package com.example.myapuuuplication;

import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;

public class Modell implements Parcelable {
    Uri img;

    public Modell(Uri img) {
        this.img = img;
    }

    protected Modell(Parcel in) {
        img = in.readParcelable(Uri.class.getClassLoader());
    }

    public static final Creator<Modell> CREATOR = new Creator<Modell>() {
        @Override
        public Modell createFromParcel(Parcel in) {
            return new Modell(in);
        }

        @Override
        public Modell[] newArray(int size) {
            return new Modell[size];
        }
    };

    public Uri getImg() {
        return img;
    }

    public void setImg(Uri img) {
        this.img = img;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeParcelable(img, i);
    }
}

package com.example.myapuUplication;
导入android.net.Uri;
导入android.os.packet;
导入android.os.Parcelable;
公共类Modell实现了Parcelable{
uriimg;
公共模型(Uri img){
this.img=img;
}
受保护的模型(包裹中){
img=in.readParcelable(Uri.class.getClassLoader());
}
公共静态最终创建者=新创建者(){
@凌驾
公共模型createFromParcel(地块中){
返回新模型(in);
}
@凌驾
公共模型[]新数组(整数大小){
返回新模型[size];
}
};
公共Uri getImg(){
返回img;
}
公共无效设置img(Uri img){
this.img=img;
}
@凌驾
公共int描述内容(){
返回0;
}
@凌驾
公共无效书面包裹(包裹,内部i){
包裹。可写可塞(img,i);
}
}

您正在使用设置适配器

public void setUris(List<Modell> uris) {
        this.uris = uris;
}

欢迎:)从未使用过FishBun,您确定URI已从意图中正确返回,并且已在适配器中正确设置它们吗?您基本上是在重置列表
this.uris=uris
您需要使用ArrayList.add()将
附加到列表中。
谢谢您解决了这个问题,但是有一个问题:当我添加新图像时,以前的图像会被删除
public void setUris(List<Modell> uris) {
        this.uris = uris;
        notifyDataSetChanged();
}