Java 如何在ListView中从ArrayList设置CardView
因此,我正在使用我的android应用程序,它从firebase获取数据,基本上是一个我保存到特定类别的ArrayList中的汽车列表。我想显示一个包含一个car对象的Java 如何在ListView中从ArrayList设置CardView,java,android,listview,arraylist,cardview,Java,Android,Listview,Arraylist,Cardview,因此,我正在使用我的android应用程序,它从firebase获取数据,基本上是一个我保存到特定类别的ArrayList中的汽车列表。我想显示一个包含一个car对象的cardwiew列表,换言之,每个card都显示有关该车的信息(型号、公里数、价格等)。我知道我应该在布局中使用ListView,但我无法让适配器工作 这个想法是,它显示了这样的东西,但与汽车照片和东西: 我不太熟悉这种类型的结构,因为我最近开始研究它,但我想我了解它是如何工作的。我制作了cardview布局模型来显示每辆车,并
cardwiew
列表,换言之,每个card都显示有关该车的信息(型号、公里数、价格等)。我知道我应该在布局中使用ListView,但我无法让适配器工作
这个想法是,它显示了这样的东西,但与汽车照片和东西:
我不太熟悉这种类型的结构,因为我最近开始研究它,但我想我了解它是如何工作的。我制作了cardview布局模型来显示每辆车,并尝试制作ViewHolder
类。谢谢你的建议!我的代码:
车辆
等级:
公共级车辆{
int anio、cv、kms、puertas;
双精度;
串可燃物,福托,马尔卡,莫代洛,帕兰卡;
公共车辆(){
}//setter和getter也是,但我忽略了它们
Mycardview\u template.xml
如果我不这样做,它显示如下:
它在模拟器和我的实际手机中都能工作首先,你应该使用recyclerView而不是ListView
以下是您错过的内容:
在onCreate方法中,替换以下内容:
VehicleListAdapter adapter = new VehicleListAdapter(this, R.layout.content_main, vehiclesList);
与
我知道我应该在布局中使用ListView,但我无法让适配器工作
实际上,你需要知道Android应用程序有一定数量的RAM来处理,如果你考虑处理图像的话,这将更少。因此,不建议使用ListVIEW来进行图像处理,特别是对于大量的图像。解决这个问题的方法是使用<强> RealReVIEW ,而不是<强> ListVIEW < /强> ./P>
此外,如果需要使用RecycleView,则需要为适配器类扩展RecycleWebAdapter,该类将有自己的ViewHolder子类
RecyclerView很容易使用,但一开始很难。练习后你会掌握它的窍门
你可以点击这个youtube链接
如果您还有一些疑问,请发表评论,我很乐意回答。谢谢您的回答和yt教程。但是,我仍然有相同的问题:CardView没有出现在我的RecyclerView中。我完全按照教程所说的做了,但没有任何效果……我将更新帖子,以便您可以看到我的新类。因此,您得到的错误是如果它是我所认为的,那么调试实际上很简单。请在ViewHolder类中也引用CardView。向它添加一个功能,例如cv.setVisibility(true);在onBindViewHolder()方法中,即使这不起作用,也尝试使用if(mRecyclerView!=null)包围setAdapter函数,以便您知道数据已呈现一切似乎都很好。如果我关闭并打开应用程序(而不终止手机中的进程),卡会列出。数据是存在的,当我调试时,它会正确加载。我认为问题在于,当应用程序第一次执行时,该方法不会执行。使用处理程序首先加载数据。第一次测试时,图像数量较少,质量较低(例如3-5个图像)。仅在完全获取数据后设置适配器。为此,请使用getChildrenCount()命令
DatabaseSnapshot的方法,获取计数,并在获取的列表等于子级数后显示列表。在此获取之前,请使用不确定的进度条显示加载动画。一个像样的图像约为200kB到300kB,以200dp tp 250dp的高度查看。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
(...)
//Prepares the recycler view and shows the data
mRecyclerView = findViewById(R.id.recyclerView);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(this);
mAdapter = new VehicleListAdapter(vehiclesList);
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setAdapter(mAdapter);
}
VehicleListAdapter adapter = new VehicleListAdapter(this, R.layout.content_main, vehiclesList);
VehicleListAdapter adapter = new VehicleListAdapter(this, R.layout.cardview_template, vehiclesList);