gpt4 book ai didi

java - 如何将数据放入XML的ListView中?

转载 作者:行者123 更新时间:2023-12-02 03:39:00 25 4
gpt4 key购买 nike

我刚刚开始学习 Android,我正在尝试创建一个简单的 View ,其中主 XML 的一部分是 ListView 。

这是我的 main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">


<RelativeLayout
android:layout_width="100dp"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:id="@+id/Menu">

<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/menu_item_1"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="129dp" />

</RelativeLayout>

<FrameLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_toEndOf="@+id/Menu"
android:layout_toRightOf="@+id/Menu"
android:layout_alignParentTop="true"
android:id="@+id/Banner">

<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Account Log"
android:layout_gravity="center"
android:inputType="none"
android:textStyle="bold"/>
</FrameLayout>

<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/Log"
android:layout_toRightOf="@+id/Menu"
android:layout_below="@+id/Banner"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:choiceMode="none"
android:clickable="false"
android:contextClickable="true"
android:fadeScrollbars="true" />

</RelativeLayout>

假设我有一个名为 getDatafromFile() 的函数,它返回数据的 ArrayList,我如何将这些数据放入我的 listView 中?

我听说过使用 ArrayAdapter,但我见过的示例将 ListView 放入整个布局。

最佳答案

将数据放入 ListView 的最佳方法是创建 ArrayAdapter 类。我总是建议您尝试使用自定义适配器类,以便您可以根据您的要求进行更改。您可以创建一个扩展 ArrayAdapter 的类。然后将 ListView 中所需的数组列表传递给该适配器构造函数。例如,下面是一个自定义适配器类

public class CustomAdapter extends ArrayAdapter<DataInfo> {


ArrayList<DataInfo> itemList =new ArrayList<>();
Context context;
LayoutInflater inflater;
public CustomAdapte(Context context, ArrayList<VegInfo> list) {
super(context, R.layout.list_item, list);
this.context = context;
itemList = list;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {

//getting an item from the list
DataInfo item = itemList.get(position);
if(convertView==null)
convertView = inflater.inflate(R.layout.list_item,parent,false);

//displaying some data from your data info in a textview
TextView textView = (TextView) convertView.findViewById(R.id.tv);
textView.setText(item.subitem);


return convertView;
}
}

在您的 Activity 中,您可以将数据设置到该适配器。

 CustomAdapter yourAdapter = new CustomAdapte(activity,yourArrayList);
yourListView.setAdapter(yourAdapter);

现在,您的 ListView 在数组列表中包含数据。每当数组列表发生变化时,只需调用

即可反射(reflect)在 ListView 中
yourAdapter.notifydatasetchanged();

此处的 list_item 是您应该为单个列表项 View 创建的自定义 XML 文件。

希望这对您有帮助。如果没有,请告诉我,让我说得更清楚。快乐编码。

关于java - 如何将数据放入XML的ListView中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37066385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com