Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.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/3/android/202.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 如何将上载到云存储的图像调整为指定大小?_Java_Android_Firebase_Firebase Realtime Database_Firebase Storage - Fatal编程技术网

Java 如何将上载到云存储的图像调整为指定大小?

Java 如何将上载到云存储的图像调整为指定大小?,java,android,firebase,firebase-realtime-database,firebase-storage,Java,Android,Firebase,Firebase Realtime Database,Firebase Storage,我在我的应用程序中使用了RecyclerView,以便教授查看学生列表,其中有照片和其他详细信息,并有删除选项。我想做的每件事都很小心。但是有一个问题,firebase的照片没有加载到RecyclerView。有时它加载一到两张照片,然后停止加载照片。当我的应用程序加载时,我观察了android Studio上的运行选项。然后我发现了像 W/art: Throwing OutOfMemoryError "Failed to allocate a 71663628 byte all

我在我的应用程序中使用了
RecyclerView
,以便教授查看学生列表,其中有照片和其他详细信息,并有删除选项。我想做的每件事都很小心。但是有一个问题,firebase的照片没有加载到
RecyclerView
。有时它加载一到两张照片,然后停止加载照片。当我的应用程序加载时,我观察了android Studio上的运行选项。然后我发现了像

    W/art: Throwing OutOfMemoryError "Failed to allocate a 71663628 byte     allocation with 4188416 free bytes and 46MB until OOM"
    V/FA: Inactivity, disconnecting from the service
为什么这个问题会发生在我身上,我真的还不明白。请帮我从这个问题中解脱出来

在寻找了很多之后,我尝试了一些步骤,比如说使缓存失效/重新启动。但这对我不起作用

以下是我在<代码>回收视图中的主要活动:

public class HRequestedStudents extends AppCompatActivity {
DatabaseReference databaseReference;
ProgressDialog progressDialog;
List<RegisteredStudent> list = new ArrayList<>();
RecyclerView recyclerView;
RecyclerView.Adapter adapter ;
RequestedStudents madapter;
RegisteredStudent registeredStudent;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_hrequested_students);
    recyclerView = (RecyclerView) findViewById(R.id.recycleView);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(HRequestedStudents.this));

    progressDialog = new ProgressDialog(HRequestedStudents.this);
    progressDialog.setMessage("Loading Data...");
    progressDialog.show();
    databaseReference = FirebaseDatabase.getInstance().getReference("RegisteredStudent");
    databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            list.clear();
            for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
                registeredStudent = dataSnapshot.getValue(RegisteredStudent.class);
                list.add(registeredStudent);
            }
            adapter = new RequestedStudents(HRequestedStudents.this, list);
            recyclerView.setAdapter(adapter);
            progressDialog.dismiss();
        }
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            progressDialog.dismiss();
        }
    });
}
}
公共类HRequestedStudents扩展AppCompative活动{
数据库参考数据库参考;
进行对话进行对话;
列表=新的ArrayList();
回收视图回收视图;
RecyclerView.适配器;
被要求的学生做得更好;
注册学生注册学生;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u受访学生);
recycleView=(recycleView)findViewById(R.id.recycleView);
recyclerView.setHasFixedSize(true);
setLayoutManager(新的LinearLayoutManager(HRequestedStudents.this));
progressDialog=新建progressDialog(HRequestedStudents.this);
progressDialog.setMessage(“正在加载数据…”);
progressDialog.show();
databaseReference=FirebaseDatabase.getInstance().getReference(“RegisteredStudent”);
databaseReference.addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot snapshot snapshot){
list.clear();
对于(DataSnapshot DataSnapshot:snapshot.getChildren()){
registeredStudent=dataSnapshot.getValue(registeredStudent.class);
列表。添加(注册学生);
}
适配器=新请求的学生(HRequestedStudents.this,list);
recyclerView.setAdapter(适配器);
progressDialog.disclose();
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
progressDialog.disclose();
}
});
}
}
这是我的适配器活动

public class RequestedStudents extends RecyclerView.Adapter<RequestedStudents.RecyclerViewHolder> {
private Context mContext;
ProgressDialog progressDialog;
List<RegisteredStudent> requestedStudents;
FirebaseStorage mFirebaseStorage = getInstance();
DatabaseReference mRef = FirebaseDatabase.getInstance().getReference("RegisteredStudent");

public RequestedStudents(Context context, List<RegisteredStudent> list) {
    mContext=context;
    requestedStudents = list;
}
@Override
public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(mContext).inflate(R.layout.hrstudentlistitems, parent, false);
    return new RecyclerViewHolder(view);
}
@Override
public void onBindViewHolder(RecyclerViewHolder holder, int position) {
    RegisteredStudent currentStudentDetails = requestedStudents.get(position);
    holder.name.setText("Name: "+currentStudentDetails.getRegeName());
    holder.room.setText("Room: "+currentStudentDetails.getRegeRoom());
    holder.id.setText("ID: "+currentStudentDetails.getRegeID());
    holder.batch.setText("Batch: "+currentStudentDetails.getRegeBatch());
    holder.dept.setText("Department: "+currentStudentDetails.getRegeDept());
    holder.email = currentStudentDetails.getRegeEmail();
    holder.nam = currentStudentDetails.getRegeName();
    holder.rum = currentStudentDetails.getRegeRoom();
    holder.mobile = currentStudentDetails.getRegeMobile();
    holder.pass = currentStudentDetails.getRegePass();
    holder.iD = currentStudentDetails.getRegeID();
    holder.Batch = currentStudentDetails.getRegeID();
    holder.Dept = currentStudentDetails.getRegeDept();
    holder.imageUri = currentStudentDetails.getImageUri();
    Picasso.get().load(currentStudentDetails.getImageUri()).into(holder.profile_photo);
}

@Override
public int getItemCount() {
    return requestedStudents.size();
}
public class RecyclerViewHolder extends RecyclerView.ViewHolder {
    public TextView name, id, room, batch, dept;
    public String email, mobile, imageUri, pass, iD, nam, rum, uId, Batch, Dept;
    public CircleImageView profile_photo;
    public Button remove, accept;

    public RecyclerViewHolder(View item) {
        super(item);
        name = item.findViewById(R.id.name);
        room = item.findViewById(R.id.room);
        id = item.findViewById(R.id.id);
        batch = item.findViewById(R.id.batch);
        dept = item.findViewById(R.id.dept);
        profile_photo = item.findViewById(R.id.profile_photo);
        remove = item.findViewById(R.id.remove);
        accept = item.findViewById(R.id.accept);

        item.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                progressDialog = new ProgressDialog(mContext);
                progressDialog.setMessage("Please Wait...");
                progressDialog.show();
                LayoutInflater inflater = LayoutInflater.from(mContext);
                View view = inflater.inflate(R.layout.student_bistarito, null);

                CircleImageView imagebi = view.findViewById(R.id.imagebi);
                TextView nambi = view.findViewById(R.id.nambi);
                TextView rumbi = view.findViewById(R.id.rumbi);
                Button call = view.findViewById(R.id.call);
                Button cancel = view.findViewById(R.id.cancel);

                final AlertDialog alertDialog = new AlertDialog.Builder(mContext).create();
                nambi.setText("Name: " + nam);
                rumbi.setText("Room: " + rum);
                Picasso.get().load(imageUri).into(imagebi);
                progressDialog.dismiss();

                uId = FirebaseAuth.getInstance().getUid();


                call.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent i = new Intent(Intent.ACTION_CALL);
                        i.setData(Uri.parse("tel:" + mobile));
                        if (ContextCompat.checkSelfPermission(mContext, CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {
                            mContext.startActivity(i);
                        } else {
                            Toast.makeText(mContext, "Go to settings and allow call permission", Toast.LENGTH_LONG).show();
                        }
                        alertDialog.dismiss();
                    }
                });
                cancel.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        try {
                            Toast.makeText(mContext, "Shubho", Toast.LENGTH_SHORT).show();
                        } catch (Exception e) {
                            Toast.makeText(mContext, e.getMessage(), Toast.LENGTH_LONG).show();
                        }
                        alertDialog.dismiss();
                    }
                });
                alertDialog.setView(view);
                alertDialog.show();
                alertDialog.getWindow().setBackgroundDrawable(null);
            }
        });
        profile_photo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                LayoutInflater inflater = LayoutInflater.from(mContext);
                View vi = inflater.inflate(R.layout.activity_photo, null);
                ImageView photo = vi.findViewById(R.id.image);
                Button close = vi.findViewById(R.id.close);
                final AlertDialog ad = new AlertDialog.Builder(mContext).create();
                Picasso.get().load(imageUri).into(photo);
                close.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        ad.dismiss();
                    }
                });
                ad.setView(vi);
                ad.show();
                ad.getWindow().setBackgroundDrawable(null);
            }
        });
        accept.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
        remove.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
                builder.setTitle("Delete");
                builder.setMessage("Are you sure to remove this student?");
                builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        try {
                            Query query = mRef.orderByChild("email").equalTo(email);
                            query.addListenerForSingleValueEvent(new ValueEventListener() {
                                @Override
                                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                                    for (DataSnapshot ds : dataSnapshot.getChildren()) {
                                        ds.getRef().removeValue();
                                    }
                                    Toast.makeText(mContext, "Removed Successfully!", Toast.LENGTH_SHORT).show();
                                }

                                @Override
                                public void onCancelled(@NonNull DatabaseError databaseError) {
                                    Toast.makeText(mContext, databaseError.getMessage(), Toast.LENGTH_SHORT).show();
                                }
                            });
                            StorageReference mPictureReferance = getInstance().getReferenceFromUrl(imageUri);
                            mPictureReferance.delete().addOnSuccessListener(new OnSuccessListener<Void>() {
                                @Override
                                public void onSuccess(Void aVoid) {
                                    Toast.makeText(mContext, "Removed Successfully!", Toast.LENGTH_SHORT).show();
                                }
                            }).addOnFailureListener(new OnFailureListener() {
                                @Override
                                public void onFailure(@NonNull Exception e) {
                                    Toast.makeText(mContext, e.getMessage(), Toast.LENGTH_SHORT).show();
                                }
                            });

                        } catch (Exception e) {
                            Toast.makeText(mContext, e.getMessage(), Toast.LENGTH_LONG).show();
                        }
                    }
                });
                builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });
                builder.create().show();
            }
        });
    }
}
}
公共类RequestedStudents扩展了RecyclerView.Adapter{
私有上下文;
进行对话进行对话;
列出被要求的学生;
FirebaseStorage mFirebaseStorage=getInstance();
DatabaseReference mRef=FirebaseDatabase.getInstance().getReference(“RegisteredStudent”);
公共请求学生(上下文、列表){
mContext=上下文;
requestedStudents=列表;
}
@凌驾
public RecycleServiceWholder onCreateViewHolder(视图组父级,int-viewType){
视图=LayoutFlater.from(mContext).充气(R.layout.hrstudentlistitems,父项,false);
返回新的RecycleServiceWholder(视图);
}
@凌驾
BindViewHolder上的公共无效(RecyclerViewHolder,内部位置){
RegisteredStudent currentStudentDetails=requestedStudents.get(位置);
holder.name.setText(“name:+currentStudentDetails.getRegeName());
holder.room.setText(“room:+currentStudentDetails.getRegeeRoom());
holder.id.setText(“id:+currentStudentDetails.getRegeID());
holder.batch.setText(“批:+currentStudentDetails.getRegeBatch());
holder.dept.setText(“部门:+currentStudentDetails.getRegeDept());
holder.email=currentStudentDetails.getRegeEmail();
holder.nam=currentStudentDetails.getRegeName();
holder.rum=currentStudentDetails.getRegeeRoom();
holder.mobile=currentStudentDetails.getRegeMobile();
holder.pass=currentStudentDetails.getRegePass();
holder.iD=currentStudentDetails.getRegeID();
holder.Batch=currentStudentDetails.getRegeID();
holder.Dept=currentStudentDetails.getRegeDept();
holder.imageUri=currentStudentDetails.getImageUri();
将(currentStudentDetails.getImageUri())加载到(holder.profile\u photo)中;
}
@凌驾
public int getItemCount(){
返回requestedStudents.size();
}
公共类RecyclerView.ViewHolder扩展了RecyclerView.ViewHolder{
公共文本视图名称、id、房间、批次、部门;
公共字符串email、mobile、imageUri、pass、iD、nam、rum、uId、Batch、Dept;
公共环路图像视图剖面图;
公共按钮移除、接受;
公共回收服务文件夹(查看项目){
超级(项目);
名称=item.findViewById(R.id.name);
房间=项目findViewById(R.id.room);
id=项目.findViewById(R.id.id);
批次=item.findViewById(R.id.batch);
dept=项目findViewById(R.id.dept);
profile_photo=item.findviewbyd(R.id.profile_photo);
移除=item.findViewById(R.id.remove);
accept=item.findViewById(R.id.accept);
item.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
progressDialog=新建progressDialog(mContext);
progressDialog.setMessage(“请稍候…”);
progressDialog.show();
LayoutFlater充气机=LayoutFlater.from(mContext);
视图=充气机。充气(R.layout.student\u bistrito,空);
CircleImageView imagebi=view.findViewById(R.id.imagebi);
TextView-nambi=view.findviewbyd(R.id.nambi);
TextView rumbi=view.findviewbyd(R.id.rumbi);
按钮调用=view.findviewbyd(R.id.call);
按钮取消=view.findViewById(R.id.cancel);
final AlertDialog AlertDialog=新建AlertDialog.Builder(mContext.create();
nambi.setText(“名称:“+nam”);
rumbi.setText(“房间:+rum”);
毕加索.get().load(imag