2011-02-11 10 views
2

XMLを使用せずに実行時にListActivityを完全に作成することは可能ですか?私は、4つのTextViewと4つのToggleButtonsの間で交互に8つの項目を持つリストビューを作成しようとしています。目標トグルボタン、TextViewのトグルボタン、トグルボタン、TextViewののTextView垂直リストを持っているあるTextViewのトグルボタン実行時作成ビューをXMLなしでListActivityに追加する方法

は、ここに私のコードです:

私はこのコードを試してみた
public class MyActivity extends ListActivity implements OnCheckedChangeListener 
{ 
    private ViewGroup.LayoutParams widthLayout = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
    private TextView[] textItems = new TextView[ 4 ]; 
    private ToggleButton[] toggleButtons = new ToggleButtons[ 4 ]; 
    private static final int ID_BASE = 5550; // unique ID for this activity 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setupView(); 
    } 
// 
    private void setupView() { 
     Vector v_itemList = new Vector(); 
     for (int i=0; i < 4; i++) { 
      int t_color = 0xFFFFFF; 
      // 
      textItems[i] = new TextView(this); 
      textItems[i].setText(""+i+". text line"); 
      textItems[i].setColor(t_color); 
      t_color -= 0x220022; 
      // 
      toggleButtons[i] = new ToggleButton(this); 
      toggleButtons[i].setTextOff(""+i+". Off"); 
      toggleButtons[i].setTextOn("On ("+i+")"); 
      toggleButtons[i].setId(ID_BASE+i); 
      toggleButtons[i].setChecked(i%2 == 1 ? true : false); 
      toggleButtons[i].setOnCheckedChangeListener(this); 
      // 
      v_itemList.addElement(textItems[i]); 
      v_itemList.addElement(toggleButtons[i]); 
     } 
     ArrayAdapter listItemAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, v_itemList); 
     this.setListAdapter(listItemAdapter); 
    } 
} 

、Iすべての要素のtoString()出力のリストリストビューを取得: [email protected]376f760 [email protected] [email protected] [email protected] ...電気ショック療法...

私はその後、使用のTextViewとトグルボタンを追加しようとしました:のためのループ内

this.addContentView(textItems[i], widthLayout); 
this.addContentView(toggleButtons[i], widthLayout); 

を。しかし、RuntimeExceptionが発生しました。あなたのコンテンツには、リストビューのID属性が 'android.R.id.list'でなければなりません。

助けていただければと思います。可能であればXMLへの参照を避けたいです。

+1

XMLを使用できない理由を知りたいですか? – user432209

+2

私は、実行時に静的なXMLの無秩序化に頼らずに調整可能な柔軟なUIを作成する方法を学ぼうとしています。プログラム的なUIを学ぶと、XMLがケーキになります。 – kralvarado

答えて

1

これは、ArrayAdapterを使用する方法ではありません。指定した配列は、データを表示するビューではなく、表示するデータでなければなりません。通常、ArrayAdapterからのみTextViewを取得します。 ToggleButtonsを取得するには、ArrayAdapterをサブクラス化してgetView()をオーバーライドする必要があります。データが表示されるようArrayAdapterは、ビューのあなたの配列を処理しているので、あなたが見ている

文字列があります。 ArrayAdapterのための標準的な動作は次のとおり

のTextViewが参照されるが、それは は(のtoStringで充填される) の各オブジェクトアレイ

ArrayAdapterList View Tutorialのマニュアルを参照してください詳細については。

私は、ListViewにトグルボタンを配置したいのはなぜだろうか。あなたがLinearLayoutに適しているようなサウンドを記述しています。

+0

トグルボタンは、テキスト以外のUIコンポーネントの代わりに使用できます。私の目標は、実行時にどのように動的なUIを作成するかを理解することです。これは、デバイスと画面のサイズに合わせて調整できます。 – kralvarado

関連する問題