我想从 firebase 检索数据。当我添加 FirebaseRecyclerAdapter 方法时
populateviewholder 方法没有实现而不是这个。另外两个 onCreateViewHoldermethod onBind 方法正在实现为什么会发生这种情况
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.expensemanager.model.Data;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
/**
* A simple {@link Fragment} subclass.
*/
public class IncomeFragment extends Fragment {
public IncomeFragment() {
// Required empty public constructor
}
//firebase database
private FirebaseDatabase fireDatabase;
private FirebaseAuth firebaseAuth;
private DatabaseReference mIncomeDatabase, mExpenseDatabase;
private RecyclerView recycleView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View myView = inflater.inflate(R.layout.fragment_income, container, false);
firebaseAuth = FirebaseAuth.getInstance();
FirebaseUser fireUser = firebaseAuth.getCurrentUser();
String uid = fireUser.getUid();
mIncomeDatabase = FirebaseDatabase.getInstance().getReference().child("Income Data 1").child(uid);
recycleView = myView.findViewById(R.id.recycle_income);
LinearLayoutManager linManager = new LinearLayoutManager(getActivity());
linManager.setReverseLayout(true);
linManager.setStackFromEnd(true);
recycleView.setHasFixedSize(true);
recycleView.setLayoutManager(linManager);
return myView;
}
@Override
public void onStart() {
super.onStart();
FirebaseRecyclerAdapter<Data,myViewHolder> adapter = new FirebaseRecyclerAdapter<Data, myViewHolder>(
Data.class, R.layout.income_recycler_data, myViewHolder.class, mIncomeDatabase
) {
@Override
protected void onBindViewHolder(@NonNull myViewHolder viewHolder, int i, @NonNull Data data) {
}
@NonNull
@Override
public myViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return null;
}
};
}
public static class myViewHolder extends RecyclerView.ViewHolder{
View mView;
public myViewHolder(@NonNull View itemView) {
super(itemView);
mView = itemView;
}
private void setType(String type){
TextView mType = itemView.findViewById(R.id.type_text_income);
mType.setText(type);
}
private void setNote(String note){
TextView mNote = itemView.findViewById(R.id.note_text_income);
mNote.setText(note);
}
private void setDate(String date){
TextView mDate = itemView.findViewById(R.id.date_text_income);
mDate.setText(date);
}
private void setAmount(int amount){
TextView mAmount = itemView.findViewById(R.id.amount_text_income);
String retriveAmount = String.valueOf(amount);
mAmount.setText(retriveAmount);
}
}
}
当我手动添加 populateviewholder 方法时,android studio 给我一个错误。
populateviewholder
去掉了。现在您需要执行以下操作:
首先使用以下命令配置适配器FirebaseRecyclerOptions
FirebaseRecyclerOptions<Chat> options =
new FirebaseRecyclerOptions.Builder<Data>()
.setQuery(query, Data.class)
.build();
接下来创建FirebaseRecyclerAdapter
:
FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter<Data, myViewHolder>(options) {
@Override
public ChatHolder 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.message, parent, false);
return new myViewHolder(view);
}
@Override
protected void onBindViewHolder(myViewHolderholder, int position, Data model) {
// Bind the Data object to the myViewHolder
// ...
}
};
查看此处了解更多详细信息:
https://github.com/firebase/FirebaseUI-Android/blob/master/database/README.md https://github.com/firebase/FirebaseUI-Android/blob/master/database/README.md
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)