如何从其他Activity中填充Android中的ListView?

时间:2012-10-09 12:20:59

标签: java android android-activity views

我想构建一个Android应用程序并使用Eclipse。这是我的第一个应用程序,我已阅读http://developer.android.com如何创建应用程序等等。

到我的Appliation:

我使用三个活动。

第一活动是主要活动。在第二个Activity上我可以输入一个字符串并有一个Button。在我的第三个Activity上,我有一个ListView但它是空的。如果我单击Button的第二个Activity,我希望该字符串将被发送到第三个Activity上的ListView。

另一个问题是我如何在Android应用程序中保存信息。我可以使用数据库还是正确的方法。我想要保存列表视图,如果我从主要活动中打开活动,我想查看带有信息的列表视图。

mycode的:

FirstActivity:

public class MainActivity extends Activity {

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


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    public void createPlan(View view)
    {
        Intent intent = new Intent(this,CreateActivity.class);

        startActivity(intent);

    }
}

第二项活动:

public class CreateActivity extends Activity {

    public final static String ListViewMessage = "de.linde.KSDILLPlan";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_create);

        FillSpinnerViews(); 
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.test, menu);
        return true;
    }

    public void FillSpinnerViews()
    {
        Spinner spinner = (Spinner)findViewById(R.id.spinner2);

        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.daysArray, android.R.layout.simple_spinner_item);

        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        spinner.setAdapter(adapter);


        Spinner Spinner2 = (Spinner)findViewById(R.id.spinner1);

        ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(this, R.array.zeitArray, android.R.layout.simple_spinner_item);

        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        Spinner2.setAdapter(adapter2); 

    }

    public void createPlan(View view)
    {
        String PlanName;
        //String StundenZahl;
        //String Wochentag;
        //Boolean doppelstunde; 

        Intent intent = new Intent(this,OpenActivity.class);

        EditText planName = (EditText)findViewById(R.id.editText1);

        PlanName = planName.getText().toString();

        intent.putExtra(ListViewMessage, PlanName); 

        startActivity(intent);

    }

第三项活动:ListView

public class OpenActivity extends Activity {

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

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_open2, menu);
        return true;
    }
}

2 个答案:

答案 0 :(得分:1)

使用以下代码从intent的包中获取字符串。

public class OpenActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_open);
        String text = getIntent().getStringExtra( CreateActivity.ListViewMessage );
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_open2, menu);
        return true;
    }
}

请参阅此link以获取持久存储问题。

答案 1 :(得分:1)

您可以使用intent将数据从一个活动传递到另一个活动,如下所示,

按钮onclick中的第二个活动,

Intent in=new Intent(currentclass.this,nextactivity.class);
in.putExtras("value_name",value);
startActivity(in);
finish();

在第三项活动中,

If(getIntent().getExtras!=null)
{
   String msg=getIntent().getStringExtra("value_name"); // value_name is the attribute given in second activity
}

您可以将数据存储在数据库或共享首选项中。这取决于你的需求。 如果要将批量数据存储为大量人员详细信息,可以使用SQLite存储在数据库中,或者如果要存储可以存储在SharedPreferences中的登录详细信息等小数据。

请参阅数据库和SharedPreferences的链接

SQLite

SharedPreferences