【发布时间】:2013-02-25 16:32:47
【问题描述】:
我正在尝试将项目从 Dialog 交换到 ListView。举例来说,我有一个清单。播放器 1、播放器 2 和播放器 3。一旦我从列表中选择了一个项目,比如说播放器 1。与播放器 2 和播放器 3 一起打开对话框。从对话框中选择播放器 3 后。列表应该类似于玩家 3、玩家 2、玩家 1。
ListView 项目起始顺序:
玩家 1 玩家 2 玩家 3
对话顺序: 玩家 2 玩家 3
交换后
玩家 3 玩家 2 玩家 1
如何做到这一点?任何算法或示例代码都会受到赞赏。谢谢你。
如果我错了,请纠正我。
这就是我正在尝试的。
public void onClick(View v) {
final Dialog dialog = new Dialog(getActivity());
dialog.setContentView(R.layout.custom);
dialog.setTitle(playerData.getDisplayPlayerName());
final ListView wrActivePlayerList = (ListView) dialog.findViewById(R.id.activePlayerListName);
final ArrayAdapter<String> activePlayer = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, qbActivePlayer);
wrActivePlayerList.setAdapter(activePlayer);
wrActivePlayerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
System.out.println("Item Clicked");
TextView playerName = (TextView)playerDataView.findViewById(R.id.playername);
for (int i = 0;i < ((ViewGroup) playerDataView).getChildCount(); i++)
{
// TextView txtView = (TextView)((ViewGroup) playerDataView).getChildAt(i); //(TextView) ((ViewGroup) playerDataView).getChildAt(i);
TextView txtView = (TextView)playerDataView.findViewById(R.id.widget_lineupview_playerdata_playername);
if (txtView != null)
{
if (txtView.getText() == qbActivePlayer[arg2])
{
txtView.setText(playerData.getDisplayPlayerName());
}
}
} playerName.setText(wrActivePlayer[arg2]);
}
});
【问题讨论】:
-
如果您使用 String[] 作为适配器的数据,那么您可以简单地分配从列表视图中选择的播放器与从对话框中选择的具有两个索引的播放器,然后您将必须调用 notifyDatasetChanged 来刷新列表视图并显示新数据
-
嗨 Saksak,感谢您的建议。非常感谢。是的,我正在使用 String[] 作为数据。你有任何示例代码吗?只是想描绘一下。谢谢。
标签: android android-layout listview dialog android-alertdialog