这里有人可以帮助我吗?
如何在下图的第二个显示屏上的recyclerView中显示“情节”和“ Pemeran”部分。
我使用与“ liveTV”相同的方法,但是由于Episode和Pemeran表中有许多子代,所以它不起作用/什么也没有出现?
请帮助,谢谢
Firebase实时数据库图片]
应用概念
dbDrakorAdapter.java -模型
public class dbDrakorAdapter {
private String LinkMovie;
private String List;
private String FotoPemain;
private String NamaPemain;
public dbDrakorAdapter (String linkMovie, String list, String fotoPemain, String namaPemain) {
LinkMovie = linkMovie;
List = list;
FotoPemain = fotoPemain;
NamaPemain = namaPemain;
}
public class Episode {
List<EpisodeDetails> episodeDetails;
}
public class EpisodeDetails {
// public Long chapterId;
public String LinkMovie;
public String List;
}
public class Pemeran {
List<PemeranDetails> pemeranDetails;
}
public class PemeranDetails {
// public Long chapterId;
public String LinkMovie;
public String List;
}
@PropertyName("LinkMovie")
public String getLinkMovie() { return LinkMovie; }
@PropertyName("List")
public String getList() { return List; }
@PropertyName("FotoPemain")
public String getFotoPemain() { return FotoPemain; }
@PropertyName("NamaPemain")
public String getNamaPemain() { return NamaPemain; }
@Exclude
public Map<String, Object> toMap() {
HashMap<String, Object> result = new HashMap<>();
result.put("List", List);
result.put("LinkMovie", LinkMovie);
result.put("FotoPemain", FotoPemain);
result.put("NamaPemain", NamaPemain);
return result;
}
}
DrakorActivity.Java
public class DrakorActivity extends AppCompatActivity {
private RecyclerView mEpisodeRV,mPemeranRV;
private FirebaseRecyclerAdapter<dbDrakorAdapter, DrakorActivity.ListEpisode> mListEpisodeAdapter;
private FirebaseRecyclerAdapter<dbDrakorAdapter, DrakorActivity.ListPemeran> mListPemeranAdapter;
FirebaseDatabase firebaseDatabase;
DatabaseReference databaseReference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_drakor);
DatabaseReference database = FirebaseDatabase.getInstance().getReference("SerialDrakor").child("Episode");
Query personsQuery = database.orderByKey();
mEpisodeRV = (RecyclerView) findViewById(R.id.cRecylerDrakorEpisode);
mEpisodeRV.setHasFixedSize(true);
mEpisodeRV.setLayoutManager(new LinearLayoutManager(this));
FirebaseRecyclerOptions personsOptions = new FirebaseRecyclerOptions.Builder<dbDrakorAdapter>().setQuery(personsQuery, dbDrakorAdapter.class).build();
mListEpisodeAdapter = new FirebaseRecyclerAdapter<dbDrakorAdapter, ListEpisode>(personsOptions) {
@Override
protected void onBindViewHolder(DrakorActivity.ListEpisode holder, int position, final dbDrakorAdapter model ) {
holder.setList(model.getList());
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(DrakorActivity.this,"Ini Hanya Iklan , Tidak Dapat Digunakan",Toast.LENGTH_LONG).show();
}
});
}
@Override
public DrakorActivity.ListEpisode onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_drakor_episode, parent, false);
return new DrakorActivity.ListEpisode(view);
}
};
LinearLayoutManager layoutManager = new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false);
mEpisodeRV.setLayoutManager(layoutManager);
mEpisodeRV.setAdapter(mListEpisodeAdapter);
}
@Override
public void onStart() {
super.onStart();
mListEpisodeAdapter.startListening();
// mListPemeranAdapter.startListening();
}
@Override
public void onStop() {
super.onStop();
mListEpisodeAdapter.stopListening();
// mListPemeranAdapter.stopListening();
}
//Episode
public static class ListEpisode extends RecyclerView.ViewHolder{
View mView;
public ListEpisode(View itemView){
super(itemView);
mView = itemView;
}
public void setList (String list){
TextView post_title = (TextView)mView.findViewById(R.id.TxtlistEpisode);
post_title.setText(list);
}
}
activity_drakor.xml
<LinearLayout
android:id="@+id/drakorLyEpisode"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_below="@id/drakorThumbnail"
android:background="@color/colorAccent"
android:orientation="horizontal">
<android.support.v7.widget.RecyclerView
android:id="@+id/cRecylerDrakorEpisode"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
</LinearLayout>
item_drakor_episode.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="60dp"
android:layout_height="30dp"
android:orientation="horizontal"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:cardBackgroundColor="#090000"
app:cardCornerRadius="15dp">
<TextView
android:id="@+id/TxtlistEpisode"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textColor="#ffffff"
android:textSize="20dp"
android:text="1"
android:textAlignment="center"
android:textStyle="bold" />
</android.support.v7.widget.CardView>
答案 0 :(得分:0)
您的FirebaseRecyclerAdapters使用相同的POJO,但是它们将显示不同的信息。 例如:
FirebaseRecyclerAdapter<EpisodePojo, DrakorActivity.ListEpisode> listEpisodesAdapter
FirebaseRecyclerAdapter<PemeranPojo, DrakorActivity.ListPemeran> listPemeranAdapter
您的代码未显示任何信息,可能是因为您的DatabaseReference试图访问“ Episode作为SerialDrakor的子代”,但是“ SerialDrakor”是对象列表,因此,您的代码将无法解析“ “ SerialDrakor”孩子变成“情节”。
您必须以列表的形式检索“ SerialDrakor”,并使用该列表中所需的子代来检索其中的“片段”和“ Pemeran”。
在这里您可以看到一些示例,使用自定义解析器可能是个好主意。
更新:我要做的是创建一个解析“ SerialDrakor”项目的类。
class SerialDrakor {
List<Episode> episodeList;
List<Pemeran> pemeranList;
.....
}
然后使用查询来检索“ SerialDrakor”
DatabaseReference database = FirebaseDatabase.getInstance().getReference();
Query serialDrakorQuery = database.child("SerialDrakor").orderByKey();
FirebaseRecyclerOptions personsOptions = new FirebaseRecyclerOptions.Builder<SerialDrakor>().setQuery(serialDrakorQuery, new SnapshotParser<SerialDrakor>() {
@Override
public SerialDrakor parseSnapshot(@NonNull DataSnapshot snapshot) {
// Here fetch the data you want and pass it to your adapters
}
希望对您有帮助。
答案 1 :(得分:0)
深入了解您的Firebase结构后,很难像您所说的那样查询。因此您可以按以下方式更改您的Firebase结构
Episode
|
|__Unique_Key
|
|__LinkMovie:"asasa.com
|__List:"1"
|__Epi:"1"
Pemeran
|
|__UniqueKey
|__fotoPermain:"...."
|__NamaPemain:"Ronny"
|__permeranId:"1"
此处,情节中的子节点1
和firebase结构中的pemeran节点将替换为唯一键的子节点。
您可以通过push()