2012-03-05 21 views

答えて

1

preview

あなたはあなた自身のリストアダプタ、このようなものにする必要があります。

public class RadioCheckAdapter extends BaseAdapter{ 

    private final RadioCheck[] radiochecks; 
    RadioCheckAdapter(RadioCheck... radiochecks) { 
     this.radiochecks = radiochecks; 
    } 
    ... 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewGroup item = getViewGroup(convertView, parent); 

     RadioCheck radiocheck = radiochecks[position]; 

     CheckBox check = (CheckBox)item.findViewById(R.id.check); 
     RadioButton radio = (RadioButton)item.findViewById(R.id.radio); 

     if (radiocheck.type==0) 
     { 
      check.setVisibility(View.VISIBLE); 
      radio.setVisibility(View.INVISIBLE); 
      check.setText(radiocheck.name); 
      radio.setText(""); 
     } 
     else 
     { 
      check.setVisibility(View.INVISIBLE); 
      radio.setVisibility(View.VISIBLE); 
      check.setText(""); 
      radio.setText(radiocheck.name); 
     }  

     return item;   
    } 

    public ViewGroup getViewGroup(View reuse, ViewGroup parent) { 
     if(reuse instanceof ViewGroup) return (ViewGroup)reuse; 

     Context context = parent.getContext(); 
     LayoutInflater inflater = LayoutInflater.from(context); 
     ViewGroup item = (ViewGroup)inflater.inflate( 
       R.layout.radiocheck_item, null); 

     return item; 
    } 

} 

そして、このようなレイアウト:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <CheckBox 
     android:id="@+id/check" 
     android:textSize="20dp" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
    /> 

    <RadioButton 
     android:id="@+id/radio" 
     android:textSize="20dp" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
    />  

</RelativeLayout> 

そして、あなたの活動で:

public class MainActivity extends ListActivity 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     setListAdapter(new RadioCheckAdapter(
        new RadioCheck("Check 1"), 
        new RadioCheck("Radio 1", 1), 
        new RadioCheck("Check 2"), 
        new RadioCheck("Radio 2", 1), 
        new RadioCheck("Check 3"), 
        new RadioCheck("Radio 3"), 
        new RadioCheck("Check 4", 1), 
        new RadioCheck("Radio 4"))); 
    } 

} 

-

class RadioCheck { 
    final String name; 
    int type=0; // 0: check, 1: radio 

    public RadioCheck(String name) 
    { 
     this.name= name; 
     this.type= 0; 
    } 

    public RadioCheck(String name, int type) 
    { 
     this.name= name; 
     this.type= type; 
    } 
} 
+0

本当にありがとうございました。 – thej

+0

あなたの歓迎の私の友人。問題が解決した場合は、解答としてマークしてください! – Mbt925

関連する問題