0

私の問題を示すために、この単純な Android アクティビティを作成しました。

画面に textInput とボタンが必要なだけです。これら2つの下で、ボタンが押された場合にListViewを作成したい(ボタンは基本的に何らかのメソッドを呼び出して文字列の配列を取得する.ListViewにこの配列を表示させたい.

したがって、プレーンな画面、ボタン、テキスト入力であり、ボタンを押すとメソッドが呼び出され、文字列の配列を受け取り、それらの下にリストを印刷します。

public class TagListViewer  extends ListActivity {

    private Button clickBtn;
    EditText textInput;
    String[] resultStr = {"a", "b", "c"}; //Ideally would want this inside the button OnClickListener... but couldn't bcz I needed one for the Array adapter.

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.tagselection);

        clickBtn = (Button) findViewById(R.id.CreatePL);
        clickBtn.setText("Search");
        textInput = (EditText) findViewById(R.id.textInput);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, resultStr);
        setListAdapter(adapter);

        clickBtn.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                ArrayAdapter<String> adapter = (ArrayAdapter<String>) getListAdapter();

                adapter.add("ABC"); //This I could use the array I get to add its elements
                adapter.notifyDataSetChanged();
            }

        });
    }
}
4

1 に答える 1

2

あなたの質問が何であるかはわかりませんが、プリミティブな文字列配列にアイテムを追加し、2つの異なるアダプタを作成しようとしていることに気付きました...私は問題についての予感があります。以下の簡単な変更を見てください。

public class TagListViewer  extends ListActivity {
    // Make adapter a class variable
    private ArrayAdapter<String> adapter;

    private Button clickBtn;
    EditText textInput;

    // You cannot add items to a primitive String array, we'll convert this to an ArrayList
    String[] resultStr = {"a", "b", "c"}; 
    List<String> list = new ArrayList<String>();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tagselection);

        // Add contents of resultStr to the dynamic List
        Collections.addAll(list, resultStr);

        clickBtn = (Button) findViewById(R.id.CreatePL);
        clickBtn.setText("Search");
        textInput = (EditText) findViewById(R.id.textInput);

        // Reflect class variable change and use list instead of resultStr
        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, list);
        setListAdapter(adapter);

        clickBtn.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                // This will add the one phrase "ABC"
                //adapter.add("ABC");

                // This will add the contents of textInput
                adapter.add(textInput.getText().toString());
            }
        });
    }
}

コメントから追加

android.R.id.listListActivityには、レイアウトにIDを持つListViewが必要です。

<ListView android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>
于 2012-08-13T21:05:20.907 に答える