2012-06-04 3 views
0

그래픽 레이아웃의 main.xml로 이동하여 디자이너에게 ExpandableList를 드래그했습니다. 나는 main.xml에 런타임 코드도 볼 수 있습니다Eclipse Android의 ListView에 arrayList 유형의 문자열을 추가하려면 어떻게해야합니까?

<ExpandableListView 
     android:id="@+id/expandableListView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 
    </ExpandableListView> 

하지만 메신저 내 응용 프로그램을 실행할 때 나는 안드로이드 장치에서 볼니까. 내가하고 싶은 일은이 ListView에 arrayList 문자열을 추가하여 내 장치에서이 목록에서 선택할 수 있도록하는 것입니다.

package com.testotspeech; 

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.Locale; 

import android.app.Activity; 
import android.os.Bundle; 
import android.speech.tts.TextToSpeech; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 

public class AndroidTestToSpeechActivity extends Activity implements 
     TextToSpeech.OnInitListener { 
    /** Called when the activity is first created. */ 

    private TextToSpeech tts; 
    private Button btnSpeak; 
    private EditText txtText; 
    private ListView lview; 
    private ArrayList<String> itemsList; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     itemsList = new ArrayList<String>(); 
     Log.i("----------",Arrays.toString(Locale.getAvailableLocales())); 
     itemsList.add(Arrays.toString(Locale.getAvailableLocales())); 
     tts = new TextToSpeech(this, this); 
     btnSpeak = (Button) findViewById(R.id.btnSpeak); 
     lview = (ListView) findViewById(R.id.expandableListView1); 
     txtText = (EditText) findViewById(R.id.txtText); 

     // button on click event 
     btnSpeak.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View arg0) { 
       speakOut(); 
      } 

     }); 
    } 

    @Override 
    public void onDestroy() { 
     // Don't forget to shutdown tts! 
     if (tts != null) { 
      tts.stop(); 
      tts.shutdown(); 
     } 
     super.onDestroy(); 
    } 

    public void onInit(int status) { 

     if (status == TextToSpeech.SUCCESS) { 

      int result = tts.setLanguage(Locale.ENGLISH); 

      if (result == TextToSpeech.LANG_MISSING_DATA 
        || result == TextToSpeech.LANG_NOT_SUPPORTED) { 
       Log.e("TTS", "This Language is not supported"); 
      } else { 
       btnSpeak.setEnabled(true); 
       speakOut(); 

      } 

     } else { 
      Log.e("TTS", "Initilization Failed!"); 
     } 

    } 

    private void speakOut() { 

     String text = txtText.getText().toString(); 
     tts.speak(text, TextToSpeech.QUEUE_FLUSH, null); 
    } 
} 

은 내가 Log.i이 다음 itemsList 느릅 나무 되 잖아 그 아래는 ArrayList를 임 내 장치에서 사용 가능한 언어 목록을 받고있다. 내 장치에서 언어를 선택할 수 있도록 ListView에이 목록을 추가하고 실시간으로 언어를 변경합니다.

문제는 내 장치에서 응용 프로그램을 실행할 때 ListView가 전혀 표시되지 않고 두 번째 문제는 ListView에 목록을 추가하는 방법입니다.

감사합니다.

+0

그것은 아주 기본적인 질문이 될 수 ArrayAdapte/BaseAdapter/CursorAdapter ,,, 될 수있는 그는 "어댑터"를 사용할 수 있습니다. 이에 대한 많은 자습서를 찾을 수 있습니다. –

답변

1

당신은 배열 어댑터를 사용하여 간단한 예

public class YourActivity extends Activity 
{ 
    private ListView lv; 
    public void onCreate(Bundle saveInstanceState) { 
     lv = (ListView) findViewById(R.id.your_list_view_id); 
     // Instanciating an array list (you don't need to do this, you already have yours) 
     ArrayList<String> your_array_list = new ArrayList<String>(); 
     your_array_list.add("foo"); 
     your_array_list.add("bar"); 
     // This is the array adapter, it takes the context of the activity as a first // parameter, the type of list view as a second parameter and your array as a third parameter 
     ArrayAdapter<String> arrayAdapter =  
     new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, your_array_list); 
     lv.setAdapter(arrayAdapter); 
     setContentView(R.layout.your_layout); 

    } 
} 
관련 문제