简体   繁体   English

RecyclerView 不显示来自数据库的数据

[英]RecyclerView doesn't show data from DB

I get data from DataBase(it works correctly), and must show it in RecyclerView, but my RecyclerView doesnt show anything, altough it isnt empty.我从数据库中获取数据(它工作正常),并且必须在 RecyclerView 中显示它,但我的 RecyclerView 没有显示任何内容,尽管它不是空的。 My adapter is very simple:我的适配器很简单:

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 Template is veru easy either, and I dont think I need show it. Class 模板也很简单,我认为我不需要展示它。

Here is my MainActivity, where my RecyclerView is given data这是我的 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); 
 } 
} 
 

I used debugger, and everything works correctly, it gets data and my ArrayList isnt empty, all my code is supposed to work correctly, but my RecyclerView remains empty.我使用了调试器,一切正常,它获取数据并且我的 ArrayList 不是空的,我的所有代码都应该正常工作,但我的 RecyclerView 仍然是空的。 Help, please请帮忙

Your adapter item count is 0 that's why it is not showing data.您的适配器项目计数为 0,这就是它不显示数据的原因。

Change this function:更改此 function:

@Override 
public int getItemCount() { 
  return 0; 
} 

to

...
return templates.size();
...

Simply replace the method inside your recycler view Adapter只需替换回收站视图适配器中的方法

@Override public int getItemCount() { return templates.size(); }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM