gpt4 book ai didi

java - 带有 XML 数据库的 Android 歌曲歌词应用程序

转载 作者:太空宇宙 更新时间:2023-11-04 12:19:09 25 4
gpt4 key购买 nike

首先让我描述一下我的 Intent 。我有一个 XML DB,其中包含一些民俗歌曲和歌词。我想为我的家人和 friend 开发一个 Android 应用程序,它将按 A-Z 顺序列出歌曲,单击/触摸歌曲标题后,会出现文本/歌词(以便我们都可以唱相同的歌词)。

我对 Java 和 Android 开发不太熟悉,但我设法创建了一个应用程序,其中第一个 Activity 中有一个按钮“显示所有歌曲”,按下该按钮后,另一个带有 ListViewActivity 列出了歌曲(使用 XMLPullHandler 解析器)。 Collections.sort() 负责排序(尽管不是 100%,因为以国家字符开头的项目会被推到末尾)。请看截图:

Screenshot of current functionality

但现在我不确定如何继续显示歌曲文本。我的想法:

  1. 为了实现这一点,单击某个项目后,将出现一个新的 SongActivity 并显示歌词。但然后我应该创建例如100 个 Intent 和 Activity ,还是我可以只用一个来实现?在后一种情况下 - 应用程序如何知道哪些文本属于单击的歌曲?
  2. 将歌词文本与歌曲标题一起加载并在 ListView 中显示,但具有属性 invisible (在 html 中很清楚,但在 java 中 - 我不确定...)

xml 文件中歌曲的示例:

<songs>
<song>
<id>1</id>
<title>Zvalila sa skala</title>
<lyrics>1. [:Zvalila sa skala z vŕšku do Dunaja,:]
[:prenes ma, má milá, prenes ma, má milá, veď je voda malá.:]

2. [:Ja bych ťa preniesla, hoc by bola väčšia,:]
[:ale že som ti nie, ale že som ti nie, tvoja najmilejšia.:]

3. [:Keby ja vedela, kde môj milý býva,:]
[:zaletela by som, zaletela by som, na jeho biely dom.:]
</lyrics>
<type>Valčík</type>
</song> ...

有人可以在这方面帮助我并提供指导吗?我将不胜感激。

On the picture is the actual status with visible values of variables

最佳答案

To achieve, that after clicking an item a new Song Activity will appear and will show the lyrics. But then I should create e.g. 100 intents and activities, or can I do it with just one? In the later case - how will the app know which text belongs to the clicked song?

不,您不必编写 100 个 Intent 或 Activity 。您可以只使用一种更通用、更方便的方法。

To load the song lyrics text together with the song title and show it in the listview, but with an attribute "invisible" (in html it is clear, but in java - I am not sure...)

虽然您的问题不是很清楚,但我想您需要显示歌曲的标题以及一些文本作为辅助文本。您尝试使用 invisible 属性给了我隐藏辅助文本的感觉,一旦单击列表项,辅助文本就会可见 - 是这样吗?

如果我的理解正确,那么您需要修改 RecyclerView 使用的适配器。您需要自定义适配器,并且在绑定(bind)列表的每个元素时,您需要通过跟踪选择的项目来自行显示/隐藏辅助文本。

我建议您使用RecyclerView来显示列表中的歌曲列表。要使用自定义适配器实现 RecyclerView,您可以在互联网上找到大量文档。这里我附上一个例子。

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

// Define the ViewHolder for list item
public class NormalViewHolder extends ViewHolder {
public NormalViewHolder(View itemView) {
super(itemView);

itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Do whatever you want on clicking the list items
}
});
}
}

// And now in onCreateViewHolder you have to pass the correct view
// while populating the list item.

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

View v;

v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_normal, parent, false);

NormalViewHolder vh = new NormalViewHolder(v);

return vh;
}

// Now bind the viewholders in onBindViewHolder
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

try {
if (holder instanceof NormalViewHolder) {
NormalViewHolder vh = (NormalViewHolder) holder;

vh.bindView(position);
}
} catch (Exception e) {
e.printStackTrace();
}
}

@Override
public int getItemCount() {
if (data == null) {
return 0;
}

// data is the ArrayList of items you want to show in your list
return data.size();
}

// Now define getItemViewType of your own.

@Override
public int getItemViewType(int position) {
return super.getItemViewType(position);
}

// Now set the default ViewHolder for NormalViewHolder
public class ViewHolder extends RecyclerView.ViewHolder {
// Define elements of a row here
public ViewHolder(View itemView) {
super(itemView);
// Find view by ID and initialize here
}

public void bindView(int position) {
// bindView() method to implement actions
}
}
}

关于java - 带有 XML 数据库的 Android 歌曲歌词应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39041199/

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