Я изо всех сил пытаюсь заполнить мой взгляд переработчика, и я не могу определить, почему. Я пытаюсь заполнить представление данными из базы данных Firebase, я могу успешно получить данные, но я не могу понять, как правильно настроить представление переработчика, я также использую FirebaseUI. Вот моя активность, содержащая firebaseUI и вызов базы данных:
public class LoggedInActivity extends AppCompatActivity {
private DatabaseReference mDatabase;
RecyclerView contentView;
private TextView mTextMessage;
ImageButton positive;
ImageButton balanced;
ImageButton negative;
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_home:
mTextMessage.setText(R.string.title_home);
return true;
case R.id.navigation_dashboard:
mTextMessage.setText(R.string.title_dashboard);
return true;
case R.id.navigation_notifications:
mTextMessage.setText(R.string.title_notifications);
return true;
}
return false;
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_logged_in);
positive = findViewById(R.id.heartButton);
balanced = findViewById(R.id.balancedButton);
negative = findViewById(R.id.negativeButton);
mTextMessage = findViewById(R.id.message);
mTextMessage.setTextColor(Color.WHITE);
BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
mDatabase = FirebaseDatabase.getInstance().getReference();
DatabaseReference mRef = mDatabase.child("posts");
Query query = FirebaseDatabase.getInstance()
.getReference()
.child("posts")
.limitToLast(50);
query.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) {
Post newPost = dataSnapshot.getValue(Post.class);
System.out.println("Title: " + newPost.title);
System.out.println("Body: " + newPost.body);
System.out.println("Previous Post ID: " + prevChildKey);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String prevChildKey) {}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String prevChildKey) {}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
FirebaseRecyclerOptions<Post> options =
new FirebaseRecyclerOptions.Builder<Post>()
.setQuery(query, Post.class)
.build();
FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter<Post, PostHolder>(options) {
@Override
public PostHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// Create a new instance of the ViewHolder, in this case we are using a custom
// layout called R.layout.message for each item
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.post_content, parent, false);
return new PostHolder(view);
}
@Override
protected void onBindViewHolder(PostHolder holder, int position, Post model) {
// Bind the Chat object to the ChatHolder
// ...
holder.bind
}
};
contentView = findViewById(R.id.recyclerView);
contentView.setAdapter(adapter);
}
}
Я также создал свой класс для извлечения сообщений из базы данных:
@IgnoreExtraProperties
public class Post {
public String title;
public String body;
public String username;
public Post() {
// Default constructor required for calls to DataSnapshot.getValue(User.class)
}
public Post(String title, String body, String username) {
title = title;
body = body;
username = username;
}
public String getTitle() { return title; }
public String getBody() { return body; }
public String getUsername() { return username; }
}
Я сейчас пытаюсь получить заголовок сообщения, я сделал этот пользовательский держатель:
public class PostHolder extends RecyclerView.ViewHolder {
TextView title;
TextView body;
TextView username;
public PostHolder(@NonNull View itemView) {
super(itemView);
title = (TextView) itemView.findViewById(R.id.title)
}
}
Здесь я думаю, что столкнулся с проблемой, я не уверен, как связать данные Post, чтобы они отображались на этой метке, которую я создал как post_content.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"/>
</LinearLayout>
Буду признателен за объяснение этой системы, так как нахожу его немного запутанным в отношении пользовательского держателя, обязательных и накачивающих частей.
Куда я иду не так? Спасибо.