Java ArrayAdapter<;MyClass>;附着到视图

Java ArrayAdapter<;MyClass>;附着到视图,java,android,Java,Android,早上好 我似乎缺少一条将ArrayAdapter连接到视图的信息(在我的第一个Android应用程序上仍在学习)。我创建了一个名为MyInfoClass的类,它只是用于保存数据的一些属性。我用数据行填充类,最后我有一个ArrayList(MyInfoClass>)。 到目前为止,一切都很好,值与我在调试透视图中预期的值相同 我还有一个XML布局,上面有一些文本视图。我想使用此布局来显示ArrayList(MyInfoClass>)中保存的不同“数据集”。我知道要做到这一点,我将使用ArrayAd

早上好

我似乎缺少一条将ArrayAdapter连接到视图的信息(在我的第一个Android应用程序上仍在学习)。我创建了一个名为MyInfoClass的类,它只是用于保存数据的一些属性。我用数据行填充类,最后我有一个ArrayList(MyInfoClass>)。 到目前为止,一切都很好,值与我在调试透视图中预期的值相同

我还有一个XML布局,上面有一些文本视图。我想使用此布局来显示ArrayList(MyInfoClass>)中保存的不同“数据集”。我知道要做到这一点,我将使用ArrayAdapter,并使用以下行:

ArrayAdapter<MyInfoClass> X = new ArrayAdapter<MyInfoClass>(this, R.layout.main, R.id.txtvw_PrevLift, ld_data);
ArrayAdapter X=新的ArrayAdapter(this,R.layout.main,R.id.txtvw\u PrevLift,ld\u data);
(ld_数据是ArrayList(MyInfoClass>object)

我的困惑来自…不知道我在做什么,但无论如何,它来自于不理解如何将MyInfoClass的属性连接到它们相应的TextView。ArrayAdapter文档没有显示一个接受TextView id列表的构造函数

谢谢你的帮助。 JB

为了帮助澄清我的困惑,我没有绑定到列表……也许我应该?我只是想让整个视图表示一行数据。为了可读性,我修剪了很多代码,但这是我的视图。一些文本视图是静态标签,其他视图将填充。按钮用于来回导航

<RelativeLayout....>

    <ImageView
        android:id=.../>

    <TextView
        android:id=.../>

    <ImageView
        android:id=.../>


    <TextView
        android:id=.../>

    <TextView
        android:id=.../>

    <TextView
        android:id=.../>

    <Button
        android:id=.../>

    <Button
        android:id=.../>

</RelativeLayout>

我想您正在寻找一个简单的列表适配器

它允许您指定从哪些字段获取数据(从构造函数中的[])以及将数据放置在何处(到构造函数中的[])

我不知道简单列表适配器是否适用于数据对象,但我知道它适用于Hashmaps。我使用自定义适配器,在处理数据对象列表时扩展BaseAdapter类型

有关如何在listview中使用简单适配器的信息,请参阅本教程:

编辑:如果您更喜欢使用数据对象,下面是另一个QA,它展示了使用数据对象的自定义SimpleAdapter的简单实现


编辑#2::对不起,我以为你绑定到了一个列表。最近有人遇到了这个问题,我建议使用listview的基本基础结构,但对其进行修改,以便只有一个项目跨越整个listview的大小。该项目基本上是包含所有文本视图的布局。在该示例中,yo你需要跟踪显示哪个项目(从哪个数据对象获取信息)并使用它。你可以在这里查看我建议的解决方案:

我想你正在寻找一个简单的列表适配器

它允许您指定从哪些字段获取数据(从构造函数中的[])以及将数据放置在何处(到构造函数中的[])

我不知道简单列表适配器是否适用于数据对象,但我知道它适用于Hashmaps。我使用自定义适配器,在处理数据对象列表时扩展BaseAdapter类型

有关如何在listview中使用简单适配器的信息,请参阅本教程:

编辑:如果您更喜欢使用数据对象,下面是另一个QA,它展示了使用数据对象的自定义SimpleAdapter的简单实现


编辑#2::对不起,我以为你绑定到了一个列表。最近有人遇到了这个问题,我建议使用listview的基本基础结构,但对其进行修改,以便只有一个项目跨越整个listview的大小。该项目基本上是包含所有文本视图的布局。在该示例中,yo您需要跟踪显示哪个项目(从哪个数据对象获取信息)并使用它。您可以在此处查看我建议的解决方案:

在您的情况下,最好使用
SimpleAdapter

您定义了一个表示列表项的XML文件。此XML文件将包含
TextViews
,您将在其中显示
MyInfoClass
中的数据。假设它是
my\u list\u item.XML

<LinearLayout...>
<TextView android:id=name.../>
<TextView android:id=gender.../>
<TextView android:id=occupation.../>
</LinearLayout>
您可以使用以下信息填写此列表:

for(int i=0; i<myArray.size(); ++i) {
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("name", myArray.get(i).getName()); 
        map.put("gender", myArray.get(i).getGender()); 
        map.put("occupation", myArray.get(i).getOcupation()); 
        maps.add(map); // add this entry to the list
    );
然后使用该列表创建一个
SimpleAdapter
,然后创建XML文件:

SimpleAdapter mAdapter = new SimpleAdapter(YourActivity.this, maps, R.layout.my_list_item, from, to);
然后在
列表活动中设置此适配器,列表将显示:

setListAdapter(mAdapter);

如果您想显示字符串以外的内容,则需要对SimpleAdapter进行子类化,并重新定义一些函数,如
setViewText
setViewImage
,但我对这一点了解不多

在您的情况下,最好使用
SimpleAdapter

您定义了一个表示列表项的XML文件。此XML文件将包含
TextViews
,您将在其中显示
MyInfoClass
中的数据。假设它是
my\u list\u item.XML

<LinearLayout...>
<TextView android:id=name.../>
<TextView android:id=gender.../>
<TextView android:id=occupation.../>
</LinearLayout>
您可以使用以下信息填写此列表:

for(int i=0; i<myArray.size(); ++i) {
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("name", myArray.get(i).getName()); 
        map.put("gender", myArray.get(i).getGender()); 
        map.put("occupation", myArray.get(i).getOcupation()); 
        maps.add(map); // add this entry to the list
    );
然后使用该列表创建一个
SimpleAdapter
,然后创建XML文件:

SimpleAdapter mAdapter = new SimpleAdapter(YourActivity.this, maps, R.layout.my_list_item, from, to);
然后在
列表活动中设置此适配器,列表将显示:

setListAdapter(mAdapter);

如果您想显示除字符串以外的其他内容,则需要将SimpleAdapter子类化,并重新定义一些函数,如
setViewText
setViewImage
,但我对此知之甚少

请看这个tuts…请看这个tuts…但如果我没有列表,它是一个简单的列表适配器吗?我的xml视图是一个“页面”使用“上一页”和“下一页”按钮显示有关XYZ的信息。当用户点击“下一页”时,我希望他们看到下一页信息。布局完全相同,只是信息/数字在数据集中来回移动时会发生变化。因此,在某种程度上,我没有要绑定的列表,但我有一个页面“列表”。本质上,我的整个“页面”表示一行…?啊,对不起,我以为你只是绑定到一个listview。我用一个解决方案编辑了我的答案