Android 使用按钮动态添加新行

Android 使用按钮动态添加新行,android,list,listview,baseadapter,android-adapter,Android,List,Listview,Baseadapter,Android Adapter,我试图在单击按钮时在列表视图中添加行,但我的应用程序每次都会崩溃。 这是我的密码: public class MTCRichGraphicsActivity extends Activity { int ELEMENT_COUNT = 3; int position=0; Button bAddView; String[] elements = new String[ELEMENT_COUNT]; int r =0 ; @Override public void onCreate(B

我试图在单击按钮时在列表视图中添加行,但我的应用程序每次都会崩溃。 这是我的密码:

public class MTCRichGraphicsActivity extends Activity {
int ELEMENT_COUNT = 3;
int position=0;
Button bAddView;
String[] elements = new String[ELEMENT_COUNT];

int r =0 ;   


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    bAddView = (Button) findViewById(R.id.bNewEvent);
   final ListView list = (ListView) findViewById(R.id.list3d);
    bAddView.setOnClickListener(new View.OnClickListener() {


        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            switch(v.getId())
            {
            case R.id.bNewEvent :
                for (int i = 0; i< ELEMENT_COUNT; i++) {
                    elements[i] = String.valueOf(i);
                }
                final MyAdapter adapter = new MyAdapter(MTCRichGraphicsActivity.this,elements);
                adapter.notifyDataSetChanged();
                //list.setScrollY(currentPosition);
                //list.setTranslationY(currentPosition);
                list.setDivider( null ); 
                list.setAdapter(adapter);

                adapter.notifyDataSetChanged();

                ELEMENT_COUNT = ELEMENT_COUNT + 3;
            }

        }
    });

}

}

不能使用这样的数组

String[] elements = new String[ELEMENT_COUNT];
使数组的元素数与元素\u COUNT的初始值相同,则不能仅将元素\u COUNT增加3,然后重试

        for (int i = 0; i< ELEMENT_COUNT; i++) {
            elements[i] = String.valueOf(i);
        }
for(int i=0;i
因为数组只包含初始定义的元素数。您需要将“元素”更改为ArrayList

ArrayList<string> elements;
ArrayList元素;
U定义

int ELEMENT_COUNT = 3;
String[] elements = new String[ELEMENT_COUNT];
但是你不能调整数组的大小

 for (int i = 0; i< ELEMENT_COUNT; i++) {
                elements[i] = String.valueOf(i);
            }
for(int i=0;i
这让你得到了例外

将数组更改为列表

List元素=新的ArrayList();
对于(int i=0;i

也可以这样更改适配器

您可以向我们展示您的logcat吗?使用集合类而不是类似数组的列表您不能在运行时增加数组的大小immutable@Premsuraj这是对的。您必须使用arraylist而不是array,因为arraylist不需要初始化其上的元素数
 for (int i = 0; i< ELEMENT_COUNT; i++) {
                elements[i] = String.valueOf(i);
            }
List<String> element =new ArrayList<String>();



   for (int i = 0; i< ELEMENT_COUNT; i++) {
                element.add("String.valueOf(i)")
            }