2011-02-23 3 views
0

2 개의 버튼이있어, 클릭하면 (자), 새로운 listView가 기동합니다. 액티비티를 시작하기 전에 클릭 한 단추와 putExtras에 따라 putString이라는 묶음을 만듭니다.extraView를 listView ArrayAdapter에 건네기

listView 활동에는 두 개의 문자열 배열이 있습니다. ArrayAdapter를 getExtras로 가져 와서 변수를 읽으면 어떤 버튼이 눌려 졌는지 알 수 있으며 ArrayAdapter에로드 할 문자열 배열을 알 수 있습니다.

여기 내 생각이지만 ArrayAdapter는 문자열 배열 중 하나의 이름 인 s = 인 경우에도 문자열을 허용하지 않습니다. 또한, 최선의 방법으로 접근하고 있는지 확신 할 수 없습니다.

Constructor 
ArrayAdapter(Context context, int textViewResourceId, T[] objects) 
Constructor 
ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects) 
Constructor 
ArrayAdapter(Context context, int textViewResourceId, List<T> objects) 
Constructor 
ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects) 

그래서 그냥 (배열에 문자열을 캡슐화해야합니다

Bundle b = this.getIntent().getExtras(); 
    String s = b.getString("TEXT"); 
    setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, s)); 

답변

2

배열 어댑터가 public 생성자에 대한 설명서로 세 번째 매개 변수로 개체의 목록을 걸립니다 (출처 Developer Android가) 제안 표시 할 문자열이 하나라도 있더라도).

ArrayList<String> arr = new ArrayList<String>(); 
arr.add(s); 
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, arr)); 

편집 좋아. 아주 기본적인 if-else 문을 사용해 보시지 않겠습니까? 좋아요 :

ArrayList<String> arrButton1 = new ArrayList<String>(); 
ArrayList<String> arrButton2 = new ArrayList<String>(); 
ArrayList<String> arrToChoose; 
if(s.equals("button1")) { 
    arrToChoose = arrButton1; 
} else if(s.equals("button2")) { 
    arrToChoose = arrButton2; 
} 
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, arrayToChoose)); 
+0

나는 그것을 시도했지만 내 변수 만 보여줍니다. 만약 s = "button1"이라면 배열에 캡슐화하면 listView에 나타나는 것은 button1뿐입니다. 이 활동에서 button1이라는 문자열 배열의 내용을로드하려고합니다. – Roger

+0

확인. 나는 당신이 해결하고자하는 문제를 이해했기를 바랍니다. 기본적으로 사용자가 하나의 버튼을 클릭하여이 활동을했는지 여부에 따라 하나의 배열 또는 다른 배열을 표시하려고합니까? 내 편집을 참조하십시오 ... –

+0

그 작품, 고마워. – Roger