0

を使用する 1 つの Android アプリケーションを開発しました。HorizontalScrollViewHorizontalScrollViewは として 1 つの子がありLinearLayoutます。

LinearLayoutここで、実行時にボタンを動的に追加したいと考えています。

ボタンは正常に追加されましたが、ボタンのクリック イベントが Android で機能しないという問題があります。

ArrayList listClassItems = objCompany.getListClassItems();

        Button[] btnCategory = new Button[listClassItems.size()];

        for(int i=0;i<listClassItems.size();i++)
        {
            System.out.println("OTHER_CLASS LENGTH : " + listClassItems.size()); 
            System.out.println("CLASS ID : " + listClassItems.get(i).getClassId());
            System.out.println("CLASS NAME : " + listClassItems.get(i).getClassName());

            btnCategory[i] = new Button(myContext); 
            btnCategory[i].setId(i);
            btnCategory[i].setTag(listClassItems.get(i).getClassId());
            btnCategory[i].setText(listClassItems.get(i).getClassName());
            btnCategory[i].setClickable(true);


            btnCategory[i].setPadding(10,10,10,10);

LayoutParams layParams = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);

            if(i!=0 || i!=listClassItems.size()-1)
            {
                layParams.leftMargin = 10;
                layParams.rightMargin = 10;
            }


            tabRowBottom.addView(btnCategory,layParams);

            btnCategory[i].setOnClickListener(null);

            tabRowBottom.addView(btnCategory[i]);



            btnCategory[i].setOnClickListener(new Button.OnClickListener() 
            {   
                public void onClick(View v) 
                {
                    Toast.makeText(myContext, "=== Button CLICKED ===",Toast.LENGTH_SHORT).show();
                    btnCategory.setBackgroundColor(Color.BLACK);
                }
            });
        }
4

1 に答える 1

1

配列の代わりに、ボタンのリストを作成します。ボタンを作成し、ID、タグ、および onclicklisteners を次のように設定して、ボタン リストに追加できます。

 buttonList = new ArrayList<Button>();

    for (int i=0;i<5;i++){
        Button button = new Button(getApplicationContext());
        button.setOnClickListener(customListenner);
        button.setId(i);
        button.setTag(i);
        myLayout.addView(button);
        buttonList.add(button);
    }

ボタンを再度使用する必要がある場合は、リストから ID またはタグを使用して呼び出すだけです。

別のリスナーが必要な場合は、一意のタグ チェックイン if 関数を使用してそれらを制御し、別のアクションを宣言できます。

これは、動的ビューをプログラムで作成するときに常に使用する方法です。

于 2014-03-25T15:14:44.557 に答える