在活动之间保留ListView项目

时间:2013-06-21 00:59:10

标签: android listview persistent

ALL,

我确实环顾四周并搜索了stackoverflow,但我的问题没有得到解答,或者我只是错误搜索了。

我有一个列表视图,显示文本和按钮。单击此按钮时,我打开另一个活动,其中不同的列表传递上一个活动的文本。

现在,当我按“返回”按钮时,我将返回“Activity1”。在这里,我可以再次按下同一行或不同的按钮上的按钮,我应该转到“Activity2”,它需要将先前放置的文本保存在“listview_Activity2”中,并从“listview_Activity1”添加新选择的文本。 / p>

我确实为两个列表视图创建了自定义适配器,并且“Activity1”在第一次按下按钮时工作正常。但是,在第二次按下时,应用程序不会保留第一个选定的文本。

现在,我看到的任何地方都是通过按下按钮从列表视图添加项目或保持列表视图项状态。我根本不关心项目状态,我的项目来自另一项活动。

有人可以帮忙吗?

以下是代码:

private static List<Product> products;

@Override
public void onCreate(Bundle savedInstance)
{
    super.onCreate( savedInstance );
    products = new ArrayList<Product>();
    Intent intent = getIntent();
    Product product = intent.getParcelableExtra( "cart_product" );
    products.add( product );
    CartLineAdapter adapter = new CartLineAdapter( this, R.layout.cart_line, products );
    setContentView( R.layout.cart );
    ListView view = (ListView) findViewById( R.id.cart_items );
    view.setAdapter( adapter );
}

1 个答案:

答案 0 :(得分:2)

您需要对数据保持一定的持久性。如果您只想在当前应用中保留它,那么您可以使用static个变量。在第一个static ArrayList的列表中选择一个项目后,创建一个包含Activity或类似内容的类,您将添加数据。然后,每次转到第二个Activity,您都可以使用static ArrayList中的数据填充列表。

您的其他选项是将此数据存储在SharedPreferences(可能不适合这种情况,但可能)或DB,如果您希望它在应用程序关闭时保留。

修改

对于任何选项,您都可以覆盖onBackPressed()

@Override
public void onBackPressed()
{
    // save data here if it hasn't yet been saved
    super.onBackPressed();
}

Storage Options