将所选项目从对话框切换到列表视图

时间:2013-02-25 16:32:48

标签: android android-layout listview dialog android-alertdialog

我正在尝试将项目从Dialog交换到ListView。比如说我有一个清单。播放器1,播放器2和播放器3.一旦我从列表中选择一个项目,说播放器1.对话框打开播放器2和播放器3.从对话框中选择播放器3。列表应该像玩家3,玩家2,玩家1。

ListView项目的开始顺序:

玩家1 玩家2 球员3

对话订单: 玩家2 球员3

交换后

玩家3 玩家2 球员1

如何做到这一点?任何Algo或示例代码都将得到赞赏。谢谢。

如果我错了,请纠正我。

这就是我想要的。

  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]);
}
});

1 个答案:

答案 0 :(得分:0)

我认为您需要更改主列表中元素的位置。当你选择第一个和第二个元素时,在第一个位置需要放第二个元素,第二个元素放在第一个位置。在列表上交换位置后,只需重新创建一个新的列表视图。

示例代码:

MainActivity.java

public class MainActivity extends ListActivity {
ArrayList<String> values = new ArrayList<String>();

public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        values.add("Android");
        values.add("iPhone");
        values.add("WindowsMobile");        
    }

@Override
    protected void onResume() {
        super.onResume();
        ArrayAdapter&lt;String&gt; adapter = new ArrayAdapter&lt;String&gt;(this,
                R.layout.rowlayout, R.id.label1, values);
        setListAdapter(adapter);
    }

@Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        String item = (String) getListAdapter().getItem(position);
        values.remove(position);
        //here I put item on 0 position
        values.add(0, item);
        Toast.makeText(this, item + " selected", Toast.LENGTH_LONG).show();
        onResume();
    }
}

rowlayout.xml

android:layout_width =“wrap_content”

android:layout_height =“wrap_content”&gt;

 &lt;ImageView
            android:id="@+id/icon" 
            android:layout_width="22px" 
            android:layout_height="22px" 
            android:layout_marginLeft="4px" 
            android:layout_marginRight="10px" 
            android:layout_marginTop="4px" 
            android:src="@drawable/ic_launcher" >
        &lt;/ImageView&gt;

&lt;TextView
        android:id="+id/label1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="+id/label" 
        android:textSize="20px" >
    &lt;/TextView&gt;
</LinearLayout>