gpt4 book ai didi

android - 如何使用来自外部文件而非 res/values/strings.xml 文件的数据填充 Android 中的 ListView

转载 作者:搜寻专家 更新时间:2023-11-01 08:52:56 24 4
gpt4 key购买 nike

我想在 android 应用程序中创建一个 ListView

数据存储在位于 Assets 文件夹中的外部 xml 文件中。

外部 xml 文件:

<root>
<category> books </category>
<item>
<title> book Title1 </title>
</item>
<item>
<title> book Title2 </title>
</item>
<item>
<title> book Title3</title>
</item>
<category> movies </category>
<item>
<title> Title1 </title>
</item>
<item>
<title> Title2 </title>
</item>
<item>
<title> Title3</title>
</item>
</root>

我想创建一个包含所有书名的 ListView

例如

book Title1
book Title2
book Title3 etc

第一步是使用 DOM 解析器来解析外部 xml 文档并使用 xpath 获取所有书籍的标题。(我已经做到了)

第二步是用这些值填充 ListView(我没有这样做,因为我不知道哪种方法最好)

我在网上看了一些例子,在这个例子中,数据存储在 strings.xml 文件中。在我的例子中,数据是动态的,来自关系数据库并存储在 xml 文件中。

我是 android 的新手,我希望得到你的建议。

我不知道在哪里存储来自外部 xml 文件的数据,以便在 Android 中填充 ListView。

谢谢

最佳答案

一些代码怎么样?下面的代码假定使用 fragment ,但您应该能够调整它(双关语意)以与任何旧的直接 Activity 一起工作:

听起来每个 ListView 项目都有两个要显示的属性:

  • 类别
  • 职位

因此,模型对象可能类似于:

public class MyItem {
private String mCategory;
private String mTitle;
public String getCategory() {
return mCategory;
}
// Plus other getters/setters.....
}

如果您想显示多个字段,您可以使用自定义布局,将其放入 res/layout 中(我们称之为 list_item_myitems.xml):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TextView
android:id="@+id/list_item_categoryTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="4dp"
android:paddingRight="4dp"
android:textStyle="bold" />

<TextView
android:id="@+id/list_item_titleTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="4dp"
android:paddingRight="4dp"/>

</RelativeLayout>

上面的布局将在 <FrameLayout> 中膨胀使用 fragment 时。如果您不使用 fragment ,则包括两个 <TextView> <ListView> 下面的项目 Activity 布局 XML 中的元素。

接下来,自定义适配器类如何处理呈现为每个 ListView 项目显示的 View ?

public class MyItemAdapter extends ArrayAdapter<MyItem> {

public MyItemAdapter(Activity activity, ArrayList<MyItem> items) {
super(activity, 0, items);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View ret;
if (convertView == null) {
convertView = getActivity().
getLayoutInflater().
inflate(R.layout.list_item_myitems, null);
}

MyItem item = getItem(position);

TextView dateTextView =
(TextView)convertView.findViewById(R.id.list_item_categoryTextView);
dateTextView.setText(item.getCategory());

TextView titleTextView =
(TextView)convertView.findViewById(R.id.list_item_titleTextView);
titleTextView.setText(item.getTitle());

ret = convertView;
return ret;
}


}

在您的 ListFragment 子类(或 Activity 子类 - 可能是 ListActivity 子类)中,创建上面的自定义适配器(确保传递您要显示的项目集合)并调用 setListAdapter(...)。

玩得开心!

关于android - 如何使用来自外部文件而非 res/values/strings.xml 文件的数据填充 Android 中的 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21462794/

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