Как прикрепить значки к ListView для разных типов файлов, извлеченных из Firebase? - PullRequest
0 голосов
/ 07 июня 2019

Я реализую проект, в котором пользователь может загружать и извлекать файлы обратно из Firebase, эти файлы включают в себя изображения, PDF и, возможно, документы, поэтому я хочу, чтобы извлеченные файлы отображались в ListView в зависимости от типа, к которому они относятся. будет показан со значком слева, для файла PDF - значок PDF, для файла изображения - значок IMG и т. д.

У меня нет большого опыта работы с ListView и с Android в целом, я мог бы выяснить, как добавить пользовательский значок, но на самом деле не справиться с этой задачей, если бы кто-нибудь дал мне хотя бы подсказку, я был бы очень признателен. Ниже я показываю код и приложение, удаляя части кода, которые не имеют значения; Изображение приложения

 public class Kompjuterike extends AppCompatActivity {

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

    displayUpload();
    editPdfName = (EditText) findViewById(R.id.txtuploadfile);
    pdfupload = (ImageView) findViewById(R.id.pdfuploadimg);
    imgupload = (ImageView) findViewById(R.id.imguploadimg);
    storageReference = FirebaseStorage.getInstance().getReference();
    databaseReference = 
    FirebaseDatabase.getInstance().getReference(databasepath);



}
private void selectPDFFile() {
    Intent intent=new Intent();
    intent.setType("application/pdf");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent,"select pdf file"),1);
}

private void selectIMGFile() {
    Intent intent=new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent,"select img file"),1);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode==1 && resultCode==RESULT_OK && data!=null && data.getData()!=null){
        uploadFile(data.getData());
    }
}


private void uploadFile(Uri data) {
    final ProgressDialog progressDialog=new ProgressDialog(this);
    progressDialog.setTitle("Uploading file...");
    progressDialog.show();
    final  StorageReference reference=storageReference.child(databasepath+"/"+System.currentTimeMillis());
    reference.putFile(data).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

            Toast.makeText(Kompjuterike.this, "Upload successful!", Toast.LENGTH_LONG).show();
            reference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                @Override
                public void onSuccess(Uri uri) {
                    String url = uri.toString();
                    Upload upload = new Upload(editPdfName.getText().toString(), url);
                    String uploadId = databaseReference.push().getKey();
                    databaseReference.child(uploadId).setValue(upload);
                    Toast.makeText(Kompjuterike.this, "File Uploaded", Toast.LENGTH_SHORT).show();
                    progressDialog.dismiss();
                }
            });

        }
    }).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
            double progress=(100.0*taskSnapshot.getBytesTransferred())/taskSnapshot.getTotalByteCount();
            progressDialog.setMessage("Uploaded: "+(int)progress+"%");

        }
    });
}

private void displayUpload(){
    uploadList = new ArrayList<>();
   listView = (ListView) findViewById(R.id.listView1);


    //adding a clicklistener on listview
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            //getting the upload
            Upload upload = uploadList.get(i);

            //Opening the upload file in browser using the upload url
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse(upload.getUrl()));
            startActivity(intent);
        }
    });

    //getting the database reference
    databaseReference = FirebaseDatabase.getInstance().getReference(databasepath);


    //retrieving upload data from firebase database
    databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                Upload upload = postSnapshot.getValue(Upload.class);
                uploadList.add(upload);
            }

            String[] uploads = new String[uploadList.size()];

            for (int i = 0; i < uploads.length; i++) {
                uploads[i] = uploadList.get(i).getName();
            }

            //displaying it to list
          adapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.listview_color,R.id.list_content, uploads);

            listView.setAdapter(adapter);

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...