【发布时间】:2011-07-16 13:38:52
【问题描述】:
我花了两天时间试图解决这个问题。如果有人可以提供帮助,我将不胜感激。
我想要达到的目标:
有一个 ListView,玩家可以通过一个文本字段(用于玩家名称)添加新条目(玩家),然后是一个提交按钮。在 ListView 的每个字段中,我显示播放器名称,然后显示两个 ImageButton。一个带有男性符号,一个带有女性符号。男性符号默认切换,用户可以通过切换男性按钮或女性按钮将玩家设置为男性或女性。最后,一旦用户移动到下一个屏幕(一个新活动),应用程序会将玩家姓名和附加的性别保存到某种形式的存储中,然后继续下一个活动。
我所取得的成就:
我有一个简单的数组适配器,当玩家将新的玩家名称添加到列表中时,我会在其上运行 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();
}
我还没有实现这两个按钮之间的任何互连,一次只允许一个处于活动状态,或者甚至取消切换一个,因为我认为我可能完全采取了错误的方法。
问题:
在列表中添加新条目时,之后切换一个和/或其他男性/女性按钮,事情变得非常有问题,男性/女性切换图标可能会随着它应该移动使用附加的播放器字符串,或者更有可能的是,那些被切换的将留在第一行(列表的数组位置 0),甚至移动到第二个列表位置,并将自己复制为被切换到上面的行。
您能提供什么帮助...?
我在屏幕下方附上了一张来自模拟器的图片,以帮助说明我的观点 Screenshot!
我认为我可能需要使用某种形式的自定义适配器;我已经在这个主题上做了很多阅读,但是我找不到任何与我想要实现的目标相关的东西,所以如果你能指出我正确的方向,或者甚至试着把最基本的解决方案放在一起类型的问题,我将非常感激。
最后,当我完成这项工作时,哪种存储形式最适合存储玩家姓名和性别?我希望用户在退出应用程序并重新启动后能够保留播放器列表。
感谢您的帮助! :)
【问题讨论】: