2016-08-22 2 views
3

С учетом использования приложения FireChat я использовал FirebaseRecyclerAdapter в своем приложении, он работает нормально, но мне нужно отфильтровать данные, которые равны определенному идентификатору пользователя.Фильтрация данных перед заполнением вида из FirebaseRecyclerAdapter

В populateView, если я делаю, что эти данные фильтруются, но пустой обработчик Элемент Item также создается.

mFirebaseAdapter = new FirebaseRecyclerAdapter<Tags, TagsViewHolder>(
      Tags.class, 
      R.layout.item_message, 
      TagsViewHolder.class, 
      mFirebaseDatabaseReference.child("tags")) { 

     @Override 
     protected void populateViewHolder(TagsViewHolder viewHolder, Tags tags, int position) { 
      mProgressBar.setVisibility(ProgressBar.INVISIBLE); 
      if((tags.getUserid()).equals(mFirebaseUser.getUid())) 
      viewHolder.tagTextView.setText(tags.getTagname()); 
     } 
    }; 

Есть ли способ, что я могу фильтровать его, прежде чем вид будет создаваться?

мой класс POJO является:

public class Tags { 
    private String userid; 
    private String tagname; 
    private HashMap<String, Object> timestampCreated; 

    public Tags() { 
    } 

    public Tags(String userid, String tagname, HashMap<String, Object> timestampCreated) { 
     this.userid = userid; 
     this.tagname = tagname; 
     this.timestampCreated = timestampCreated; 
    } 

    public String getUserid() { 
     return userid; 
    } 

    public String getTagname() { 
     return tagname; 
    } 

    public HashMap<String, Object> getTimestampCreated() { 
     return timestampCreated; 
    } 
} 

Спасибо!

ответ

2

Фильтрация на стороне клиента - это открытый запрос функции для FirebaseUI. См. https://github.com/firebase/FirebaseUI-Android/issues/15.

Фильтрация данных на стороне клиента означает, что приложение сначала загружает данные, а затем не показывает их пользователю. Это расточительно, и большинство пользователей мобильных приложений оценят это, если ваше приложение загружает только те данные, которые им показывают.

Лучшие способы обработки подмножества данных - либо моделировать данные таким образом, чтобы вы могли напрямую обращаться к подмножеству данных, которые вы хотите отобразить, или использовать Firebase queries to limit the data that is retrieved.

+1

Okay @Frank Спасибо, я понял. Если я не хочу использовать запрос Firebase, вы можете дать представление о том, как это сделать с данными моделирования? –

+0

В этом случае вы можете моделировать сообщения для каждого пользователя. Так '/ messagesPerUser/$ uid/$ messageId'. –

+0

Да, я получил то, что искал, я только что реализовал то, что вы предложили. Он работает так, как ожидалось, спасибо большое @Frank. –

Смежные вопросы