Изображение не отображается в веб-просмотре - PullRequest
0 голосов
/ 01 июня 2018

Я загружаю некоторый HTML-текст (который содержит теги img) в Firestore (изображения загружаются в хранилище Firebase).Когда я пытаюсь отобразить эти html-данные в веб-просмотре, я получаю только текст без изображений

Вот код, который я использовал для загрузки HTML в FireStore

 storageReference.child(System.currentTimeMillis() + ".png").putFile(file_uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                    post_img_url = String.valueOf(taskSnapshot.getDownloadUrl());
                    String HTML = editor.getContentAsHTML().replace(uuid_, post_img_url);

                    Question_model question_model = new Question_model(mAuth.getUid(), HTML);

                    mFireStoredbReference.collection("Questions").add(question_model).addOnCompleteListener(new OnCompleteListener<DocumentReference>() {
                        @Override
                        public void onComplete(@NonNull Task<DocumentReference> task) {
                            Toast.makeText(Forum.this, "Question added", Toast.LENGTH_SHORT).show();
                            startActivity(new Intent(Forum.this, ListQuestions.class));
                            finish();
                        }
                    });
                }
            });

И я пытаюсьвозьмите эти данные из коллекции Вопросы

firebaseFirestore.collection("Questions").addSnapshotListener(new EventListener<QuerySnapshot>() {
                @Override
                public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {

                    if (e instanceof com.google.firebase.firestore.FirebaseFirestoreException) {
                       // Log.d(TAG, "onEvent: The error is " + e);

                    } else {
                        try {
                            for (DocumentChange doc : queryDocumentSnapshots.getDocumentChanges()) {

                                if (doc.getType() == DocumentChange.Type.ADDED) {
                                    Question_model model = doc.getDocument().toObject(Question_model.class);
                                    question_modelList.add(model);
                                    questionAdapter.notifyDataSetChanged();
                                }
                            }
                        } catch (Exception e2) {

                        }
                    }
                }
            });

Вот мой адаптер для просмотра переработчика

public class QuestionAdapter extends RecyclerView.Adapter<QuestionAdapter.MyViewHolder> {

Context ctx;
FirebaseFirestore mFirebaseFirestore;
private List<Question_model> question_modelList;

public QuestionAdapter(List<Question_model> question_modelList, Context ctx) {
    this.question_modelList = question_modelList;
    this.ctx = ctx;
}


@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {


    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.question_individual, parent, false);

    return new MyViewHolder(view);
}

@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {

    mFirebaseFirestore = FirebaseFirestore.getInstance();
    String user_id = question_modelList.get(position).getUser_id();

    mFirebaseFirestore.collection("users").document(user_id).get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<DocumentSnapshot> task) {
            if (task.isSuccessful()) {
                holder.user_name.setText(task.getResult().getString("user_name"));
            } else {

            }
        }
    });
    Log.d("Asis", "onBindViewHolder: "+question_modelList.get(position).getContent_html());
        holder.question.loadData(question_modelList.get(position).getContent_html(),"text/html","utf-8");
}

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

public class MyViewHolder extends RecyclerView.ViewHolder {

    TextView user_name;
    WebView question;


    public MyViewHolder(View itemView) {
        super(itemView);
        user_name = itemView.findViewById(R.id.user_name);
        question = itemView.findViewById(R.id.question);
        question.getSettings().setJavaScriptEnabled(true);
        question.getSettings().setLoadsImagesAutomatically(true);
        question.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE);
        question.getSettings().setDomStorageEnabled(true);

    }


}

}

1 Ответ

0 голосов
/ 01 июня 2018

вы можете использовать Glide для простой загрузки изображений из хранилища Firebase.
Сначала добавьте FirebaseUI в ваше приложение / build.gradle:

dependencies {
// FirebaseUI Storage only
implementation 'com.firebaseui:firebase-ui-storage:0.6.0'} 

Затем вы можете загружать изображения непосредственно из хранилища:

Glide.with(this /* context */)
    .using(new FirebaseImageLoader())
    .load(/*storageReference*/)
    .into(/*yourView*/);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...