2014-03-30 7 views
1

내가하고 싶은 것은 2 개의 RadioButton이 있고, 그 중 하나를 클릭하면 ListView1이 표시되고, 다른 RadioButton을 클릭하면, 이것이 내가 내 xml 파일에있어 무엇RadioGroup show 2 개의 다른 ListView를 만드는 방법

ListView2을 보여줍니다

<RadioGroup 
    android:id="@+id/radioGroup1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:orientation="horizontal" > 

    <RadioButton 
     android:id="@+id/radio0" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:checked="true" 
     android:paddingRight="5dp" 
     android:text="Free Apps" /> 

    <RadioButton 
     android:id="@+id/radio1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Paid Apps" /> 

</RadioGroup> 

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/radioGroup1" > 
</ListView> 

을 그리고 이것은 내 된 .java에있는 것입니다 :

private void populateListView() { 
    // Create list of items 
    String[] items = {"Test", "Test 2", "Test 3"}; 
    String[] items2 = {"Bla", "Bla bla", "Bla bla bla"}; 

    // Build Adapter 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.mainitem, items); 
    ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this, R.layout.mainitem, items2); 

    // Configure the list view 
    ListView list = (ListView) findViewById(R.id.listView1); 
    list.setAdapter(adapter); 

} 

public void onCheckedChanged(RadioGroup group, int checkedId) { 
    if(checkedId == R.id.radio0){ 
     // Show items 
    } 
    if(checkedId == R.id.radio1){ 
     // Show items2 
    } 
} 

public void onClick(View v) { 
    RadioGroup.clearCheck(); 
} 

당신이 다른 뭔가가 필요, 제발 저에게 알려주세요. 감사!

답변

0

당신은 청취자에 populateListView 방법에 당신이 무엇을 추가해야합니다

public void onCheckedChanged(RadioGroup group, int checkedId) { 
    if(checkedId == R.id.radio0){ 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.mainitem, items); 
     ListView list = (ListView) findViewById(R.id.listView1); 
     list.setAdapter(adapter); 

    } else if(checkedId == R.id.radio1){ 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.mainitem, items2); 
     ListView list = (ListView) findViewById(R.id.listView1); 
     list.setAdapter(adapter); 

    } 
} 

방금 ​​경우 여분을 추가 할 필요가 당신이을 radioGroup의 선택을 취소하면 목록을 숨기거나 삭제하려면 -1을 반환하고 listview를 변경 한 경우. 안드로이드 레퍼런스에서 : "When the selection is cleared, checkedId is -1."

if (checkedId == -1) { ... } 
0

또 다시 새로운 목록보기 및 어댑터 인스턴스를 만들 필요가 없습니다. 목록을 업데이트 할 때마다 목록을 업데이트해야합니다.

String[] items = {"Test", "Test 2", "Test 3"}; 
     String[] items2 = {"Bla", "Bla bla", "Bla bla bla"}; 
    List<String> arrayList1 = new ArrayList(Arrays.asList(items)); 
    ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, arrayList1); 
ListView list = (ListView) findViewById(R.id.listView1); 
list.setAdapter(adapter); 


public void onCheckedChanged(RadioGroup group, int checkedId) { 

    if(checkedId == R.id.radio0){ 
     arrayList1.clear(); 
     arrayList1.addAll(Arrays.asList(items)); 
    } else if(checkedId == R.id.radio1){ 
      arrayList1.clear(); 
     arrayList1.addAll(Arrays.asList(items2)); 
    } 
if(adapter != null){ 
adapter.notifyDataChange(); 

}

}