-1

インデックスが範囲外の例外になり、理由がわかりません。助けてください。リストを繰り返し処理しようとしています。リストのサイズは2です。動的テーブルを作成してリストを印刷しようとしています。

 public void display(ArrayList list) {

            TableLayout tl = (TableLayout) findViewById(R.id.main_table);

            for(int i = 0;i<=list.size(); i++){

                EmployeeBean empList = (EmployeeBean) list.get(i);

                int count = 0;

                TableRow tr = new TableRow(this);
                tr.setId(100+count);
                tr.setLayoutParams(new LayoutParams(
                        LayoutParams.WRAP_CONTENT,
                        LayoutParams.WRAP_CONTENT));
                tr.setClickable(true);

                final TextView empName = new TextView(this);
                empName.setId(200+count);
                empName.setText(empList.getName());
                tr.addView(empName);

                final TextView empStream = new TextView(this);
                empStream.setId(200+count);
                empStream.setText(empList.getStream());
                tr.addView(empStream);

                final TextView empLevel = new TextView(this);
                empLevel.setId(200+count);
                empStream.setText(empList.getLevel());

                final TextView empDesignation = new TextView(this);
                empDesignation.setId(200+count);
                empDesignation.setText(empList.getDesignation());

                tl.addView(tr, new TableLayout.LayoutParams(
                        LayoutParams.WRAP_CONTENT,
                        LayoutParams.WRAP_CONTENT));
               count++;

               tr.setOnClickListener(new OnClickListener() {

                    public void onClick(View v) {

                        outpuText = new TextView(MainActivity.this);
                        outpuText.setText("Name: " + empName.getText() + "\n"
                                + "Stream: " + empStream.getText() + "\n" + "Level: "
                                + empLevel + "\n" + "Designation :" + empDesignation);
                        setContentView(outpuText);

                    }
                });

            }

私が受け取っている例外は

java.lang.IndexOutOfBoundsException: Invalid index 2, size is 2
4

6 に答える 6

2
for(int i = 0;i<=list.size(); i++)

indexはZEROから始まり、size()はこのリストの要素の数を返します。<=を使用すると、i値は、結果としてリスト内の要素の数を超えますIndexOutofBoundsException

したがって、上記のコードは

for(int i = 0;i< list.size(); i++)
于 2013-01-10T05:32:18.817 に答える
0

forループlist.size() - 1の代わりに使用します:list.size()

for(int i = 0;i<=(list.size() - 1); i++)

または、次のように変更します<=<

for(int i = 0;i<list.size(); i++)
于 2013-01-10T05:32:34.647 に答える
0
for(int i = 0;i<=list.size(); i++)

に変更します

int size = list.size();
for(int i = 0;i<size; i++)
于 2013-01-10T05:33:03.843 に答える
0

ゼロからi始まりsize()、配列内のオブジェクトの数を返すため、forループを次のように変更する必要があります。

for(int i = 0; i < list.size(); i++)
于 2013-01-10T05:36:34.133 に答える
0

インデックスは0から始まり、リストサイズが「以下」であるかどうかをテストしています。

これは、3回の反復(0、1、2)でtrueを返します。

'for'ステートメントをに変更します

for(int i = 0; i<list.size(); i++){

それを修正する必要があります。

于 2013-01-10T05:37:03.210 に答える
0
public void display(ArrayList list) {

         TableLayout tl = (TableLayout) findViewById(R.id.main_table);

         for(int i = 0;i<=list.size(); i++){

ここでは、変数を0に初期化しており、<=条件を<に置き換えるか、初期化を1に置き換えた状態で正常に動作することを示しています。ありがとうございます。

于 2013-01-10T05:48:39.623 に答える