を参照してください。代わりに、RecyclerView.ViewHolder
を拡張するカスタムアダプタを作成する必要があります。
このアダプタに値を渡すために、まず私たちはaddValueEventListener
を使用してデータを取得する必要があり、その後、私たちは、アダプタに値を渡す必要があります。我々はIDを使用して選択しているとき、何をすべきか
これは私のコードです...
final ArrayList<Timeline> timelines = new ArrayList<>();
mDatabaseTimeline.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
final Timeline timeline = dataSnapshot.getValue(Timeline.class);
if(timeline != null){
mDatabaseFriends.child(mAuth.getCurrentUser().getUid()).child("active").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (mAuth.getCurrentUser().getUid().equals(timeline.getUid()) || dataSnapshot.hasChild(timeline.getUid())) {
timelines.add(timeline);
mTimelineRecycler.setAdapter(new RecyclerAdapter(TimelineFragment.this.getContext(), timelines));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
アダプター----->
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
Context context;
ArrayList<Timeline> timeline;
public RecyclerAdapter(Context context, ArrayList<Timeline> timeline) {
this.context = context;
this.timeline = timeline;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(context);
View row = inflater.inflate(R.layout.timeline_row, parent, false);
TimelineViewHolder holder = new TimelineViewHolder(row);
return holder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
final String post_key = timeline.get(position).getPostkey();
((TimelineViewHolder) holder).setUsername(timeline.get(position).getUsername());
}
@Override
public int getItemCount() {
return timeline.size();
}
public class TimelineViewHolder extends RecyclerView.ViewHolder {
public TimelineViewHolder(View itemView) {
super(itemView);
view = itemView;
}
public View getView() {
return view;
}
public void setUsername(String username) {
TextView usernameTxtView = (TextView) view.findViewById(R.id.timeline_username);
usernameTxtView.setText(username);
}
}
}
?私たちは完全に10の記事を持っていると仮定しよう。私たちはいくつかのユーザーの投稿だけを取得したいと思っています.....例えば、Facebookの友達は私たちの友達の投稿だけを取得します。私の大学プロジェクトをfirebaseを使ってやっています....それはFacebookのようなアプリです...友人にリクエストを送る...タイムラインで投稿を見るなど –
[ユーザー投票を表示する必要がある問題]に対する解決策(https://stackoverflow.com/questions/45865924/firebase-getting-around-joins-example-display-star-count-for-each-user)各商品の投票ごとにリクエストを実行するだけですか?私はリクエストが並行して実行されていることを知っています。クラウド機能ですべてのことを行うことで往復を救うことができますが、それでも無駄なことはありません。 – Ced