0

onClick メソッドに ArrayList を配置したい。しかし、arraylistをfinalに変更する必要があると教えてくれます(そこに何かを入れるのでできません)。どのように配列リストを入れるべきですか!?

  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final TextView txt1;
    Button btn1;


     ArrayList <String> shop= new ArrayList <String>();
    impshop(shop);

    txt1 =(TextView)findViewById(R.id.tv1);
    btn1 =(Button)findViewById(R.id.button1);

    btn1.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Random ran = new Random();
            int choose = ran.nextInt(shop.size());  
            txt1.setText(shop.get(choose));
        }});

}

onClick(View v,ArrayList shop) できますか?

4

3 に答える 3

1

に追加finalするだけでなく、メソッドArrayListの外で定義することもできますonCreatefinalその場合、修飾子を定義する必要はありません。

アクティビティのコンテキストArrayListに属する要素や、​​アプリケーションの他のコンテキストにリンクされている可能性のある要素を格納するために を使用しないでください。そうしないと、大量のメモリ リークが発生する可能性があります。

于 2013-11-05T15:44:53.097 に答える
0

final前に追加

ArrayList <String> shop= new ArrayList <String>();

したがって、次のようになります。

final ArrayList <String> shop= new ArrayList <String>();
于 2013-11-05T15:43:02.690 に答える
0
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final TextView txt1;
    Button btn1;

    final ArrayList <String> shop= new ArrayList <String>();
    impshop(shop);

    txt1 =(TextView)findViewById(R.id.tv1);
    btn1 =(Button)findViewById(R.id.button1);

    btn1.setOnClickListener(new OnClickListener(){

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Random ran = new Random();
        int choose = ran.nextInt(shop.size());  
        txt1.setText(shop.get(choose));
    }});
}

またはArrayListをフィールドとして宣言します

于 2013-11-05T15:45:59.247 に答える