gpt4 book ai didi

android - 每行有两个按钮的自定义 ListView

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:08:04 24 4
gpt4 key购买 nike

我花了两天时间试图解决这个问题。如果有人能提供帮助,我将不胜感激。

我想要实现的目标:

有一个 ListView,玩家可以通过文本字段(玩家名称)和提交按钮添加新条目(玩家)。在 ListView 的每个字段中,我显示玩家名称,然后是两个 ImageButton。一个带有男性符号,一个带有女性符号。男性符号默认切换,用户可以通过切换男性按钮或女性按钮来将玩家设置为男性或女性。最后,一旦用户移动到下一个屏幕(一个新 Activity ),应用程序会将玩家姓名和附加的性别保存到某种形式的存储中并继续进行下一个 Activity 。

我取得的成就:

我有一个简单的数组适配器,在玩家向列表中添加新玩家名称时,我在其上运行 notifyDataSetChanged()。适配器还设置为使用自定义行布局文件。在布局文件中,它看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content">
<RelativeLayout android:layout_height="wrap_content"
android:layout_width="fill_parent" android:id="@+id/relativeLayout1" android:layout_marginTop="5dp">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/playerName"
android:layout_centerVertical="true" android:text="Derp" android:textStyle="bold" android:layout_marginLeft="5dp" android:textSize="22dp" android:textColor="@color/male_blue"></TextView>
<ImageButton android:layout_height="60dp"
android:layout_width="60dp" android:onClick="maleClickHandler"
android:src="@drawable/male_icon_settings" android:id="@+id/buttonA" android:layout_alignParentRight="true" android:layout_marginRight="65dp"></ImageButton>
<ImageButton android:onClick="femaleClickHandler"
android:layout_height="60dp" android:layout_width="60dp" android:id="@+id/buttonB"
android:layout_alignParentRight="true" android:layout_marginRight="5dp" android:src="@drawable/female_icon_settings"></ImageButton>
</RelativeLayout>
</LinearLayout>

每行上的两个按钮引用类文件中的方法。这是我的代码:

public void maleClickHandler(View v) {

RelativeLayout vwParentRow = (RelativeLayout) v.getParent();
ImageButton maleButton = (ImageButton) vwParentRow.getChildAt(1);
maleButton.setImageDrawable(getResources().getDrawable(
R.drawable.male_icon_selected));
vwParentRow.refreshDrawableState();
}

public void femaleClickHandler(View v) {

RelativeLayout vwParentRow = (RelativeLayout) v.getParent();
ImageButton femaleButton = (ImageButton) vwParentRow.getChildAt(2);
femaleButton.setImageDrawable(getResources().getDrawable(
R.drawable.female_icon_selected));
vwParentRow.refreshDrawableState();
}

我还没有在这两个按钮之间实现任何互连,一次只允许激活一个按钮,或者甚至取消切换一个按钮,因为我认为我可能完全采用了错误的方法。

问题:

在列表中添加新条目后,AFTER 切换一个和/或其他男性/女性按钮,事情变得非常有问题,并且男性/女性切换图标可能会像它应该的那样移动,使用附加的播放器字符串,或者更可能的是,那些被切换的将留在第一行(列表的数组位置 0),甚至移动到第二个列表位置,并将它们自己复制到上面的行上。

您可以如何帮助...?

我在屏幕下方附上了来自模拟器的图片,以帮助说明我的观点 Screenshot!

我认为我可能需要使用某种形式的自定义适配器;我已经对这个主题做了很多阅读,但我找不到任何与我想要实现的目标相关的东西,所以如果你能指出我正确的方向,或者甚至尝试将最基本的解决方案放在一起类型的问题,我将不胜感激。

最后,当我开始工作时,哪种存储形式最适合存储玩家姓名及其性别?我希望用户在退出应用程序并重新启动后能够保留播放器列表。

感谢您的帮助! :)

最佳答案

您将需要使用自定义适配器,它本身应该能够跟踪每个条目的男性/女性标志。

您的方法将不起作用,因为按钮的状态由适配器的 getView 方法管理。即使您通过挖掘子项来更改它们,下次调用 getView 方法时,它也会把事情搞砸。

关于android - 每行有两个按钮的自定义 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6668514/

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