Android загрузить imageView с возможностью рисования в зависимости от данных, полученных от firebase - PullRequest
0 голосов
/ 05 августа 2020

Я не могу найти способ установить изображение в imageView из папки с возможностью переноса в зависимости от строковых данных, полученных из базы данных Firebase.

Я получаю значения из базы данных Firebase следующим образом:

    DatabaseReference personsRef = FirebaseDatabase.getInstance().getReference().child("Persons");
    Query personsQuery = personsRef.orderByKey();
    FirebaseRecyclerOptions personsOptions = new FirebaseRecyclerOptions.Builder<Adapter>().setQuery(personsQuery, Adapter.class).build();
    
             mAdapter = new FirebaseRecyclerAdapter<Adapter, Tab1.MyViewHolder>(personsOptions) {
                            @Override
                            protected void onBindViewHolder(Tab1.MyViewHolder holder, final int position, final Adapter model) {
                
                                holder.setTitle(model.getTitle());
                                holder.setDate(model.getDate());
        }

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

Цель состоит в том, чтобы заполнить imageViews в RecyclerView изображениями из папки с возможностью переноса в зависимости от данных, загруженных из Firebase. Что-то вроде: если "title" загружен из firebase = 1, установите imageView на R.drawable.thisPerson1.

Ответы [ 2 ]

0 голосов
/ 05 августа 2020

Вы можете добавить полученную строку в ImageView Resource ID

DatabaseReference personsRef = FirebaseDatabase.getInstance().getReference().child("Persons");
Query personsQuery = personsRef.orderByKey();
FirebaseRecyclerOptions personsOptions = new FirebaseRecyclerOptions.Builder<Adapter>().setQuery(personsQuery, Adapter.class).build();

         mAdapter = new FirebaseRecyclerAdapter<Adapter, Tab1.MyViewHolder>(personsOptions) {
                        @Override
                        protected void onBindViewHolder(Tab1.MyViewHolder holder, final int position, final Adapter model) {
            
                            holder.setTitle(model.getTitle());
                            holder.setDate(model.getDate());
                            holder.yourImageView.setImageResource(R.drawable+"."+model.getImage())
    }

        @Override
        public Tab1.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycle_tab1, parent, false);
            return new Tab1.MyViewHolder(view);
        }
    };
0 голосов
/ 05 августа 2020

Если в заголовке указано число вроде 0..10, тогда вы можете попытаться создать массив res:

если 1..10, тогда попробуйте использовать model.getTitle() - 1 et c.

<integer-array name="some_name">
    <item>@drawable/thisPerson1</item>
    <item>@drawable/thisPerson2</item>
    <item>@drawable/thisPerson3</item>
    <item>@drawable/thisPerson4</item>
</integer-array>
private TypedArray imagesArray = getResources().obtainTypedArray(R.array.some_name);
private int image = imagesArray.getResourceId(imagesArray.getIndex(title), defaultValue)

ImageView.setBackgroundResource(image)

imagesArray.recycle()
...