web-dev-qa-db-ja.com

AndroidでArrayListをString配列に変換します

[ann、john]の形式の値を含むArrayListがあります。このArrayListを{"ann"、 "john"}の形式のString配列に変換したい。

どうすればいいですか?

My Android code:

     final Button markabsent = (Button) findViewById(R.id.Button02);
      markabsent.setOnClickListener(new View.OnClickListener() {
          public void onClick(View v) {

            // Perform action on click
             Toast.makeText(display.this,"You have marked the students absent",Toast.LENGTH_SHORT).show();

             SparseBooleanArray checkedabsent = lView.getCheckedItemPositions();



            for (int i = 0; i < arr2.length; i++) 
            {
                if (checkedabsent.get(i)) 
                {
                    items2.add(arr2[i]);
                    System.out.println(items2);

                }
            }

            Log.d("", "items:");
            for (String string : items2)
            {
                Log.d("string is", string);


            }  
          }
      });  

私のLogcat:

     11-10 21:44:00.414: INFO/System.out(2316): [ann, john, ann]
     11-10 21:44:00.414: DEBUG/(2316): items:
     11-10 21:44:00.414: DEBUG/string is(2316): ann
     11-10 21:44:00.414: DEBUG/string is(2316): john

私は答えに記載されているすべてを試しましたが、私のlogcatは改善しないようです

例外を与えるものは次のとおりです。

          11-10 22:14:20.855: INFO/System.out(3322): [Ljava.lang.String;@44eb6ff0
          11-10 22:16:38.186: ERROR/AndroidRuntime(3411): FATAL EXCEPTION: main
          11-10 22:16:38.186: ERROR/AndroidRuntime(3411): Java.lang.ClassCastException: [Ljava.lang.Object;
          11-10 22:16:38.186: ERROR/AndroidRuntime(3411):     at com.example.display$2.onClick(display.Java:124)
          11-10 22:16:38.186: ERROR/AndroidRuntime(3411):     at Android.view.View.performClick(View.Java:2408)
          11-10 22:16:38.186: ERROR/AndroidRuntime(3411):     at Android.view.View$PerformClick.run(View.Java:8816)
          11-10 22:16:38.186: ERROR/AndroidRuntime(3411):     at Android.os.Handler.handleCallback(Handler.Java:587)

ここにもう1つあります。

          11-10 22:14:20.875: DEBUG/string is(3322): ann
          11-10 22:14:20.875: INFO/System.out(3322): [Ljava.lang.String;@44eb7720
          11-10 22:14:20.875: INFO/System.out(3322): [Ljava.lang.String;@44eb7720
          11-10 22:14:20.885: INFO/System.out(3322): [Ljava.lang.String;@44eb7720
          11-10 22:14:20.895: DEBUG/string is(3322): john
          11-10 22:14:20.895: INFO/System.out(3322): [Ljava.lang.String;@44eb7de8
          11-10 22:16:38.186: ERROR/AndroidRuntime(3411):     at com.example.display$2.onClick(display.Java:124)
30
Parth Doshi

メソッド「toArray()」を使用します

ArrayList<String>  mStringList= new ArrayList<String>();
mStringList.add("ann");
mStringList.add("john");
Object[] mStringArray = mStringList.toArray();

for(int i = 0; i < mStringArray.length ; i++){
    Log.d("string is",(String)mStringArray[i]);
}

または、あなたはこのようにそれを行うことができます:(他の回答で言及されています)

ArrayList<String>  mStringList= new ArrayList<String>();
mStringList.add("ann");
mStringList.add("john");
String[] mStringArray = new String[mStringList.size()];
mStringArray = mStringList.toArray(mStringArray);

for(int i = 0; i < mStringArray.length ; i++){
    Log.d("string is",(String)mStringArray[i]);
}

http://developer.Android.com/reference/Java/util/ArrayList.html#toArray()

95
DallaRosa

まあ一般的に:

List<String> names = new ArrayList<String>();
names.add("john");
names.add("ann");

String[] namesArr = new String[names.size()];
for (int i = 0; i < names.size(); i++) {
    namesArr[i] = names.get(i);  
}

または、組み込みを使用して:

List<String> names = new ArrayList<String>();
String[] namesArr = names.toArray(new String[names.size()]);
31
Casey
String[] array = new String[items2.size()];
items2.toArray(array);
8
Mihai Popescu

私はこれに答えるのが非常に遅いことを知っています。しかし、それは他の人を助けるでしょう、私もこれに固執しました。

これが機能するために私がやったことです。

String[] namesArr = (String[]) names.toArray(new String[names.size()]);
3
Abdul.Moqueet
try this

List<String> list = new ArrayList<String>();
list.add("List1");
list.add("List2");

String[] listArr = new String[list.size()];
listArr = list.toArray(listArr );

for(String s : listArr )
    System.out.println(s);
2
Vishnu V S

このコードを試すことができます

String[] stringA = new String[stringArrayList.size()];
stringArrayList.toArray(stringA)
System.out.println(stringA[0]);
2
Ishan Fernando

配列をArrayListと同じサイズにし、アイテムのインデックスを作成して配列に挿入するための反復forループを作成できます。

1
Michael Banzon