2017-11-03 21 views
1

私は、3 x 4グリッドのボタンが表示される次のアプリケーションを作成しました。グリッドは親線形レイアウト内に線形レイアウトをネストすることによって描画されます。私はそのidを参照して最初のボタンを削除しようとしています。しかし、アンドロイドスタジオによると、removeViewAtメソッドは解決できません。誰か私にボタンのいずれかを削除する正しい方法を教えてもらえますか?ありがとうございました。ネストされた線形レイアウト内のビューを削除する

package com.example.myapplication; 

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.Gravity; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.Button; 
import android.widget.LinearLayout; 

public class MainActivity extends AppCompatActivity { 

    private static final int MENU_ITEM_ITEM1 = 1; 
    LinearLayout.LayoutParams params; 
    LinearLayout linearLayout; 
    int _row; 
    int column; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     linearLayout = new LinearLayout(this); 
     linearLayout.setOrientation(LinearLayout.VERTICAL); //Can also be done in xml by android:orientation="vertical" 
     params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT); 
     params.weight = 1.0f; 
     params.gravity = Gravity.TOP; 
     //layout.setBackgroundColor(0xFFFFFFFF); 
     _row=3; 
     column=4; 
     update(); 

     (linearLayout.getChildAt(0)).removeViewAt(0); 
    } 


    public void update(){ 
     for (int i = 0; i < _row; i++) { 
      LinearLayout row = new LinearLayout(this); 
      row.setLayoutParams(params); 

      for (int j = 0; j < column; j++) { 
       Button btnTag = new Button(this); 
       btnTag.setLayoutParams(params); 
       btnTag.setText("Button " + (j + 1 + (i * column))); 
       btnTag.setId(j + 1 + (i * column)); 
       if ((i+j) % 2 == 0) { 
        btnTag.setBackgroundColor(0xFFFF0000); 
       } else { 
        btnTag.setBackgroundColor(0x00000000); 
       } 
       btnTag.setBackgroundResource(R.drawable.ic_android_black_24dp); 
       row.addView(btnTag); 
      } 
      linearLayout.addView(row); 
     } 

     setContentView(linearLayout); 
    } 

答えて

1

getChildAt(int index)Viewオブジェクトを返します。
あなたがメソッドremoveViewAt(int index)を使用するためにViewGroup(またはそのサブクラスの1つ)にキャストする必要があります

((LinearLayout) linearLayout.getChildAt(0)).removeViewAt(0) 
+0

この文脈での「キャスト」の意味は何ですか? –

+0

この記事の準備が整いましたhttps://stackoverflow.com/questions/5289393/casting-variables-in-java –

関連する問題