0

ボタンがクリックされたときに、グリッドビューテーブルにデータを追加する必要があります。私のコード:

    String[] data = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"};
    GridView gvMain;
    ArrayAdapter<String> adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.smena); 
          adapter = new ArrayAdapter<String>(this, R.layout.item, R.id.tvText, data);
                gvMain = (GridView) findViewById(R.id.gridView1);
                gvMain.setAdapter(adapter);
           Button but1=(Button) findViewById(R.id.button1);
            but1.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View arg0) {

                     ButtonOn (1);
                }
            });
    }

    public void ButtonOn (int Art){
        adapter.add("1");
        gvMain.setAdapter(adapter);
    }

ボタンをクリックすると、アプリケーションが予期せず停止しました。

4

3 に答える 3

1

ArrayAdapter は、配列を変更できない AbstractList (リスト) に変換します。ArrayAdapter の初期化中に、配列を使用する代わりに ArrayList を使用します。

String[] data = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k" };

    ArrayList<String> lst = new ArrayList<String>();
    GridView gvMain;

    ArrayAdapter<String> adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.smena);

        lst.addAll(Arrays.asList(data));        
        adapter = new ArrayAdapter<String>(this, R.layout.title_bar, R.id.editText1,lst);

        gvMain = (GridView) findViewById(R.id.gridView1);
        gvMain.setAdapter(adapter);

        Button but1 = (Button) findViewById(R.id.button1);
        but1.setOnClickListener(new OnClickListener() {

            public void onClick(View arg0) {

                ButtonOn(1);
            }
        });
    }

    public void ButtonOn(int Art) {
        lst.add("1");       
        gvMain.setAdapter(adapter);
    }
于 2012-12-20T12:48:23.077 に答える
0
Try This Code   

 String[] items = {"a","b","c","d","e","f"};



            Button b = (Button)findViewById(R.id.button1);

            b.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    GridView gridView = (GridView)findViewById(R.id.gridView1);

                    gridView.setAdapter(new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, items));

(or)

gridView.setAdapter(new ArrayAdapter<String>(getApplicationContext(),R.layout.cust,  R.id.textView1, items));

                }
            });
于 2012-12-20T12:49:59.203 に答える
0

LogCat はどのようなエラーを表示していますか...

「null ポインター例外」または「アクティビティを開始できません」が表示されている場合は、単一のアクティビティ内のすべての項目を膨らませるか、データをアクティビティに適切にインテントして、新しいアクティビティに GridView を表示する必要があります。

私の考えを理解していただければ幸いです。さらに重要なことに、Activity はより多くのメモリを消費するため、Activity を Activity のコンテンツとして使用することはお勧めしません。同じことを踏襲しているが欠点を隠しているチュートリアルがたくさんあることは知っています。

于 2012-12-20T13:15:09.397 に答える