[英]RecyclerView doesn't show data from DB
我從數據庫中獲取數據(它工作正常),並且必須在 RecyclerView 中顯示它,但我的 RecyclerView 沒有顯示任何內容,盡管它不是空的。 我的適配器很簡單:
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
ArrayList<Template> templates = new ArrayList<>();
public RecyclerViewAdapter(){}
public RecyclerViewAdapter(ArrayList<Template> myTemplates) {
this.templates = myTemplates;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.myTitle.setText(templates.get(position).getTitle());
holder.myLink.setText(templates.get(position).getImageLink());
}
@Override
public int getItemCount() {
return 0;
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView myTitle, myLink;
public ViewHolder(@NonNull View itemView) {
super(itemView);
myTitle = itemView.findViewById(R.id.title);
myLink = itemView.findViewById(R.id.link);
}
}
}
Class 模板也很簡單,我認為我不需要展示它。
這是我的 MainActivity,其中我的 RecyclerView 獲得了數據
public class MainActivity extends AppCompatActivity {
private TemplateDatabaseHelper mDBHelper;
private SQLiteDatabase mDb;
RecyclerView rv;
RecyclerViewAdapter adapter;
ArrayList<Template> myTemplates;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myTemplates = new ArrayList<>();
mDBHelper = new TemplateDatabaseHelper(this);
rv = findViewById(R.id.rv);
try {
mDBHelper.updateDataBase();
} catch (IOException mIOException) {
throw new Error("UnableToUpdateDatabase");
}
try {
mDb = mDBHelper.getWritableDatabase();
} catch (SQLException mSQLException) {
throw mSQLException;
}
Cursor cursor = mDb.rawQuery("SELECT * FROM titles", null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
Template template = new Template(cursor.getString(1), cursor.getString(2));
myTemplates.add(template);
cursor.moveToNext();
}
rv.setHasFixedSize(true);
rv.setLayoutManager(new LinearLayoutManager(this));
adapter = new RecyclerViewAdapter(myTemplates);
rv.setAdapter(adapter);
}
}
我使用了調試器,一切正常,它獲取數據並且我的 ArrayList 不是空的,我的所有代碼都應該正常工作,但我的 RecyclerView 仍然是空的。 請幫忙
您的適配器項目計數為 0,這就是它不顯示數據的原因。
更改此 function:
@Override
public int getItemCount() {
return 0;
}
至
...
return templates.size();
...
只需替換回收站視圖適配器中的方法
@Override public int getItemCount() { return templates.size(); }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.