【问题标题】:get user inputs from an editText and populate listView从 editText 获取用户输入并填充 listView
【发布时间】:2015-09-28 16:53:27
【问题描述】:

我如何从一个活动和populate the listView 获取用户输入以及另一活动中的用户数据。我能够获取用户输入并在同一活动中填充 listView。但现在我想以一种形式获取用户输入并在另一个活动中填充列表。

我用来通过获取用户输入来填充 listView 的代码如下

public class MainActivity extends ListActivity {
ArrayList<String> list = new ArrayList<String>();

/** Declaring an ArrayAdapter to set items to ListView */
ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button btn = (Button) findViewById(R.id.btnAdd);

    /** Defining the ArrayAdapter to set items to ListView */
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);

    /** Defining a click event listener for the button "Add" */
    View.OnClickListener listener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            EditText edit = (EditText) findViewById(R.id.txtItem);
            String name=edit.getText().toString();
            list.add(name);
            edit.setText("");
            adapter.notifyDataSetChanged();
        }
    };

    /** Setting the event listener for the add button */
    btn.setOnClickListener(listener);

【问题讨论】:

  • 您可以通过意图传递数据。参考链接:stackoverflow.com/questions/19286970/…
  • 如果您想传递大量数据,@Sarah 的回答很好。但是,如果您的数据只是一个字符串,您可以考虑通过 Intent 传递它。

标签: android


【解决方案1】:
  1. 您可以将用户输入/数据存储到本地数据库中;这将允许您在应用程序的任何位置访问您的数据 (推荐因为您正在处理listview)。

  2. 如果您的数据相对较小,您可以使用shared preferences 来存储数据。

【讨论】:

    【解决方案2】:

    在你当前的Activity(activity包含你的按钮)中,创建一个新的Intent:

    String name = ""; 
    name = edit.getText().toString();
    Intent i = new Intent(getApplicationContext(), NewActivity.class);
    i.putExtra("keyword",name);
    startActivity(i);
    

    然后在 NewActivity(活动包含您的 Listview)中,检索这些值:

    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        String name = extras.getString("keyword");
        if(name != ""){
            // adapter.notifyDataSetChanged();
        }
    }
    

    方法很简单,希望对你有帮助

    【讨论】:

      【解决方案3】:

      在第二个 Activity 中声明一个公共方法

      SecondActivity.class

      public static ArrayList<String> list = new ArrayList<String>();
      
      /** Declaring an ArrayAdapter to set items to ListView */
      ArrayAdapter<String> adapter
      
      onCreate()
      {
      ...
      ;
       adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
      listview.setAdapter(adapter);
      ...
      }
      
      public static void ModifyList()
      {
         adapter.notifyDataSetChanged();
      }
      

      FirstActivity.class

       View.OnClickListener listener = new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  EditText edit = (EditText) findViewById(R.id.txtItem);
                  String name=edit.getText().toString();
                  SecondActivity.list.add(name);
                  edit.setText("");
                  SecondActivity.ModifyList();
              }
          };
      

      【讨论】:

        【解决方案4】:

        像这样从 FirstActivity 发送您的 ArrayList :

            Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
            intent.putStringArrayListExtra("Datalist",list);
            startActivity(intent);
        

        在 secondActivity 中使用接收列表:

          Intent i = getIntent();  
          list = i.getStringArrayListExtra("Datalist");
        

        然后将其显示在您的 SecondActivity 列表视图中

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-10-07
          • 2015-10-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-24
          相关资源
          最近更新 更多