将输出文本存储在数组列表中,并将其显示在ListView Android中

时间:2016-06-22 14:20:55

标签: java android listview

我正在尝试构建我的第一个Android应用程序,我想出了一个"问题"。 我想将输出文本存储在arrayList中,并将其显示在listView中,该listView位于另一个页面上。

MainActivity类:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    TextView textView = (TextView) findViewById(R.id.textView);
    final TextView textView2 = (TextView) findViewById(R.id.textView2);
    final SeekBar seekBar = (SeekBar) findViewById(R.id.seekBar);
    RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
    Button button = (Button) findViewById(R.id.button);
    final RadioButton radioButton = (RadioButton) findViewById(R.id.radioButton);
    final RadioButton radioButton2 = (RadioButton) findViewById(R.id.radioButton2);
    final RadioButton radioButton3 = (RadioButton) findViewById(R.id.radioButton3);
    final RadioButton radioButton4 = (RadioButton) findViewById(R.id.radioButton4);
    final TextView textView3 = (TextView) findViewById(R.id.textView3);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            ArrayList<String> addArray = new ArrayList<String>();
            TextView textView3 = (TextView)findViewById(R.id.textView3);
            ListView listView = (ListView)findViewById(R.id.listView);

            String getInput = textView3.getText().toString();

            if(addArray.contains(getInput)){
                Toast.makeText(getBaseContext(),"Password already exists!",Toast.LENGTH_LONG).show();
            }
            else if (getInput==null){
                Toast.makeText(getBaseContext(), "Input field is empty!", Toast.LENGTH_SHORT).show();
            }
            else {
                addArray.add(getInput);
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1,addArray);
                listView.setAdapter(adapter);
                ((TextView)findViewById(R.id.textView3)).setText("");
            }

            Snackbar.make(view, "Password saved!", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });

此时我的代码运行没有错误......但我希望listView位于另一个名为:saved_pa​​sswords的活动中。当我编辑这个

ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1,addArray);到此

ArrayAdapter<String> adapter = new ArrayAdapter<String>(saved_passwords, android.R.layout.simple_list_item_1,addArray);我的代码不会运行。

感谢高级人员。

3 个答案:

答案 0 :(得分:0)

在您给出的第一个示例中,您正在正确传递活动的上下文。在第二个问题是,你不是如何引用另一个活动上下文,但更重要的是,你还没有访问saved_passwords的上下文。活动未公开。

我建议您将Listview addArray传递给@ himanshu1496建议的其他活动。然后,您就可以进行以下调用而不会出现saved_passwords的任何错误。

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

答案 1 :(得分:0)

启动SavedPassword活动时,您必须传递<?xml version="1.0" encoding="utf-8" ?> <Application xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:theme="clr-namespace:UI.Themes" x:Class="UI.App"> <Application.Resources> <ResourceDictionary MergedWith="themes:BlueTheme" /> </Application.Resources> <Label Text="Hello" /> </Application> ,如下所示:

ArrayList

在SavedPasswordActivity的Intent intent = new Intent(MainActivity.this, SavedPasswordActivity.class); data.putStringArrayList("SavedPassword", addArray); intent.putExtras(data); startActivity(intent); 方法内,您必须初始化onCreate,如下所示:

ListView

是的,不要忘记在@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_saved_password); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); ArrayList<String> addArray getIntent().getExtras().getStringArrayList("SavedPassword"); ListView listView = (ListView)findViewById(R.id.listView); ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1,addArray); listView.setAdapter(adapter); } 文件中加入ListView

答案 2 :(得分:0)

最简单的方法来创建另一个包含0;0;"ok"的类,其中包含ArrayList

public static

然后,您可以在 MainActivity 中将项目添加到public class MyClass { public static ArrayList<String> addArray; }

ArrayList

现在您也可以使用 saved_pa​​sswords 活动访问相同的MyClass.addArray.add("item");

ArrayList

我希望这很有帮助。