Мои данные хранятся в базе данных реального времени firebase.И я хочу, чтобы все данные в представлении переработчика.
Я перепробовал все возможные способы получения данных.При работе с базой данных Firebase в первый раз.
public class ImageAndDescription extends AppCompatActivity {
private RecyclerView mRecyclerView;
private FirebaseDatabase mFirebaseDatabase;
private DatabaseReference mRef;
private ViewHolder viewHolder;
private Query query;
private FirebaseRecyclerOptions<Model> options;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image_and_description);
//ActionBar
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle("Posts Lists");
mRecyclerView = findViewById(R.id.recyclerView);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
//send query to firebase
mFirebaseDatabase = FirebaseDatabase.getInstance();
mRef = mFirebaseDatabase.getReference("Data");
}
@Override
protected void onStart() {
super.onStart();
query = FirebaseDatabase.getInstance().getReference().child("Data").limitToLast(50);
options = new FirebaseRecyclerOptions.Builder<Model>().setQuery(query, Model.class).build();
FirebaseRecyclerAdapter firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Model, ViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull ViewHolder holder, int position, @NonNull Model model) {
viewHolder.setDetails(getApplicationContext(), model.getTitle(), model.getDescription(), model.getImage());
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return null;
}
};
mRecyclerView.setAdapter(firebaseRecyclerAdapter);
}
}
Класс ViewHolder, этот класс установит представление:
public class ViewHolder extends RecyclerView.ViewHolder {
View mView;
public ViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
//set details to the recycler view row
public void setDetails(Context ctx, String title, String description, String image) {
//views
TextView mTitleView = mView.findViewById(R.id.rTitle);
TextView mDetail = mView.findViewById(R.id.rDescription);
ImageView mImage = mView.findViewById(R.id.rImageView);
//set data to the view
mTitleView.setText(title);
mDetail.setText(description);
Picasso.get().load(image).into(mImage);
}
}
Класс модели, это обычный класс метода получения и установки для установки данных:
public class Model {
String Title, Image, Description;
public Model() {}
public String getTitle() {
return Title;
}
public void setTitle(String title) {
Title = title;
}
public String getImage() {
return Image;
}
public void setImage(String image) {
Image = image;
}
public String getDescription() {
return Description;
}
public void setDescription(String description) {
Description = description;
}
}
Ошибка:
10-19 12:21:19.816 28465-28465/com.example.jerry.anotherdemo E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.jerry.anotherdemo, PID: 28465
java.lang.NoSuchMethodError: No static method getFont(Landroid/content/Context;ILandroid/util/TypedValue;ILandroid/widget/TextView;)Landroid/graphics/Typeface; in class Landroid/support/v4/content/res/ResourcesCompat; or its super classes (declaration of 'android.support.v4.content.res.ResourcesCompat' appears in /data/app/com.example.jerry.anotherdemo-2/split_lib_dependencies_apk.apk)
at android.support.v7.widget.TintTypedArray.getFont(TintTypedArray.java:119)
at android.support.v7.widget.AppCompatTextHelper.updateTypefaceAndStyle(AppCompatTextHelper.java:208)
at android.support.v7.widget.AppCompatTextHelper.loadFromAttributes(AppCompatTextHelper.java:110)
at android.support.v7.widget.AppCompatTextHelperV17.loadFromAttributes(AppCompatTextHelperV17.java:38)
at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:81)
at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:71)
at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:67)
at android.support.v7.widget.Toolbar.setTitle(Toolbar.java:753)
at android.support.v7.widget.ToolbarWidgetWrapper.setTitleInt(ToolbarWidgetWrapper.java:261)
at android.support.v7.widget.ToolbarWidgetWrapper.setWindowTitle(ToolbarWidgetWrapper.java:243)
at android.support.v7.widget.ActionBarOverlayLayout.setWindowTitle(ActionBarOverlayLayout.java:621)
at android.support.v7.app.AppCompatDelegateImplV9.onTitleChanged(AppCompatDelegateImplV9.java:631)
at android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:328)
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
at com.example.jerry.anotherdemo.ImageAndDescription.onCreate(ImageAndDescription.java:31)
at android.app.Activity.performCreate(Activity.java:6543)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1113)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2513)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2626)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1475)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5740)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:766)