Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在ListView中从ArrayList设置CardView_Java_Android_Listview_Arraylist_Cardview - Fatal编程技术网

Java 如何在ListView中从ArrayList设置CardView

Java 如何在ListView中从ArrayList设置CardView,java,android,listview,arraylist,cardview,Java,Android,Listview,Arraylist,Cardview,因此,我正在使用我的android应用程序,它从firebase获取数据,基本上是一个我保存到特定类别的ArrayList中的汽车列表。我想显示一个包含一个car对象的cardwiew列表,换言之,每个card都显示有关该车的信息(型号、公里数、价格等)。我知道我应该在布局中使用ListView,但我无法让适配器工作 这个想法是,它显示了这样的东西,但与汽车照片和东西: 我不太熟悉这种类型的结构,因为我最近开始研究它,但我想我了解它是如何工作的。我制作了cardview布局模型来显示每辆车,并

因此,我正在使用我的android应用程序,它从firebase获取数据,基本上是一个我保存到特定类别的ArrayList中的汽车列表。我想显示一个包含一个car对象的
cardwiew
列表,换言之,每个card都显示有关该车的信息(型号、公里数、价格等)。我知道我应该在布局中使用ListView,但我无法让适配器工作

这个想法是,它显示了这样的东西,但与汽车照片和东西:

我不太熟悉这种类型的结构,因为我最近开始研究它,但我想我了解它是如何工作的。我制作了cardview布局模型来显示每辆车,并尝试制作
ViewHolder
类。谢谢你的建议!我的代码:

车辆
等级:

公共级车辆{
int anio、cv、kms、puertas;
双精度;
串可燃物,福托,马尔卡,莫代洛,帕兰卡;
公共车辆(){
}//setter和getter也是,但我忽略了它们
My
cardview\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);