编辑文本并将其放入列表视图

时间:2015-08-12 17:31:06

标签: android

我是Android Studio的新手,所以如果您能帮我解决问题,我将不胜感激。如何输入一些文字并使用ListView将其添加到Bundle

例如,假设我在MainActivty中的EditText组件中输入了一个名称,然后当我按下OK按钮时,它将被显示在列表视图中的另一个活动中。

我一直在使用Bundle将文字传输到另一个Activity,但我无法弄清楚如何将文字传输到ListView

2 个答案:

答案 0 :(得分:2)

如果您只想在列表项中显示字符串,则可以相当简单地完成,否则您将需要制作自定义适配器。对于前者,这是你想要做的事情

  • 创建ArrayList<String>,您将存储从EditText输入的值。
  • 创建ArrayAdapter<String>,用于将ArrayListListView相关联。

您的最终代码如下所示:

public class MainActivity extends Activity {
    private ListView listView;
    List<String> strings;
    ArrayAdapter<String> arrayAdapter;

    public void onCreate(Bundle saveInstanceState) {
         setContentView(R.layout.yourLayout);

         listView= (ListView) findViewById(R.id.yourListView);

         strings = new ArrayList<String>();
         strings.add("list item 1");
         strings.add("list item 2");

         arrayAdapter = new ArrayAdapter<String>(
                 this, 
                 android.R.layout.simple_list_item_1,
                 strings);

         listView.setAdapter(arrayAdapter); 
    }
}

然后在“确定”按钮的onClick上,只需将EditText中的字符串添加到arrayList,并通知listView它应该更新为调用它:

arrayAdapter.notifyDataSetChanged();

答案 1 :(得分:0)

我认为您不能将Bundle用于您想要实现的目标。我就是这样做的......

首先,您需要设置列表。我会使用全局变量:

ListView listView;
EditText editText;
ArrayList<String> strings;
ArrayAdapter<String> adapter;

现在,在onCreate(),你可以......

listView = (ListView) findViewById(R.id.your_listview);
editText = (EditText) findViewById(R.id.your_edittext );
strings = new ArrayList<>();
adapter =  new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, strings);
listView.setAdapter(adapter);

您需要为OnClickListener设置Button。我也会在onCreate()中执行此操作:

Button button = (Button) findViewById(R.id.your_button);
button .setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // Here we get the text from the EditText component
        String text = editText.getText().toString();

        // Now add it to the list
        strings.add(text);

        // And finally, update the list
        adapter.notifyDataSetChanged();
    }
});