0

我正在尝试将项目从 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]);
}
});
4

1 回答 1

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

行布局.xml

android:layout_width="wrap_content"

android:layout_height="wrap_content" >

 &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>
于 2013-02-26T08:04:13.107 回答