0

ダイアログからリストビューにアイテムを交換しようとしています。たとえば、リストがあるとします。プレーヤー 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

メインリストの要素の位置を変更する必要があると思います。最初と 2 番目の要素を選択するときは、最初の位置に 2 番目の要素を配置し、2 番目の要素を最初の位置に配置する必要があります。リストの位置を入れ替えた後、新しいリストビューを再作成するだけです。

サンプルコード:

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 に答える