0

次のコードを実行すると、チェックボックスの名前がランダムな文字列 ( などandroid.widget.CheckBox@43e641b0) として表示されます。また、追加されたチェックボックスをクリックすることもできません。

これは私のJavaコードです:

package com.srk.android.rough1;
import java.util.ArrayList;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.EditText;
import android.app.ListActivity;


public class Rough1Activity extends ListActivity {
   ArrayList<CheckBox> listItems=new ArrayList<CheckBox>();
   ArrayAdapter<CheckBox> adapter;
   private EditText taskNameEditText;

   @Override
   public void onCreate(Bundle icicle) {
       super.onCreate(icicle);
       setContentView(R.layout.main);
       adapter=new ArrayAdapter<CheckBox>(this, android.R.layout.simple_list_item_multiple_choice, listItems);
       setListAdapter(adapter);
   }

   public void addItems(View v) {
       taskNameEditText=(EditText)findViewById(R.id.TaskName);
       String taskName=taskNameEditText.getText().toString();
       CheckBox cb=new CheckBox(this);
       cb.setText(taskName);
       listItems.add(cb);
       adapter.notifyDataSetChanged();
   }
}
4

1 に答える 1

0

整数または文字列の配列を追加するように、チェックボックスを表示しようとしています...別のアプローチをお勧めします:

public class Rough1Activity extends ListActivity {
    private ArrayList<String> listItems = new ArrayList<String>();
    private ArrayAdapter<String> adapter;
    private EditText taskNameEditText;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);

        // I like this layout, but it's your choice
        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_checked, listItems);
        //adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, listItems);
        setListAdapter(adapter);

        // I guessed that you want a multiple choice list from your first layout choice. This is optional, you can remove it.
        ListView listView = getListView();
        listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

        // Here you only need to initialize taskNameEditText once 
        taskNameEditText = (EditText) findViewById(R.id.TaskName);
    }

    public void addItems(View v) {
        // Add the current string in the EditText to the ListView
        adapter.add(taskNameEditText.getText().toString());
    }
}

文字列のリストを取得し、文字列をチェックボックスで表示したいとします。これを反映するために ArrayList と ArrayAdapter を String サブタイプに変更し、レイアウトandroid.R.layout.simple_list_item_checkedにチェックボックス機能自体を追加しました。これで、ユーザーはチェック可能な行を含む ListView に入力したテキストを確認できます。

お役に立てれば!

于 2012-08-12T18:13:51.513 に答える