用户按下按钮后保存项目列表

时间:2012-04-01 21:00:21

标签: android

我有一个使用Jsoup从网站解析结果创建的项目列表,这是在按下图像按钮时启动的任务。结果看起来不错,但是当我按下手机上的后退按钮然后返回活动时,结果消失,屏幕显示为空白。这意味着用户必须再次按下按钮。

那么只有在按下图像按钮后,如何才能保留项目列表?

由于

修改

我查看了Android网站上的“数据存储”页面并完成了以下操作:

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView( R.layout.new_sightings );

    // Store data once created
    SharedPreferences settings = getSharedPreferences( PREFS_NAME,0 );

    reload = (Button)findViewById( R.id.reloadTen );
    reload.setOnClickListener( this );

    list = getListView();
    list.setOnItemClickListener( new OnItemClickListener() 
    {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id ) 
        {
            // Start an activity based on what list view item is pressed
            Intent intent = new Intent( newSightings.this, newCompass.class );

            // Pass the data we retrieved to the next activity
            intent.putExtra( "info",data[position]  );
            startActivity( intent );
        }

    });
    list.setTextFilterEnabled( true );
    adapter = new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1, listItems );
    setListAdapter( adapter );
}

@Override
protected void onStop() 
{
    super.onStop();

    SharedPreferences settings = getSharedPreferences( PREFS_NAME,0 );
    SharedPreferences.Editor editor = settings.edit();

    for( int i = 0; i < data.length; i++ )
    {
        editor.putString( "sighting"+i,data[i].toString() );
    }
    editor.commit();
}

我知道我在onCreate方法上做得不多,因为我不确定如何正确地调用数据。有很多数据,每个键的值都有很大差异。顺便说一句,我应该在实际获取数据的AsyncTask中添加共享首选项吗?我对这个有点困惑......

3 个答案:

答案 0 :(得分:1)

当你回来使用时,活动就消失了。因此,您需要硬保存数据。 this可以提供帮助。

然后,在onCreate()中检查是否已保存数据,如果已保存,则加载它。

最好的问候。

答案 1 :(得分:1)

您可以通过两种方式保存此类信息:

  1. 解析完成后。您可以使用SharedPreferences将数据保存到用户后立即保存。
  2. 您可以拦截按键,请参阅Intercept back button from soft keyboard
  3. 我会选择#1,因为#2更麻烦。请参阅Activity Lifecycle文档,了解何时恢复已保存的信息。

答案 2 :(得分:1)

在使用共享偏好之前,您能说出您想要保存多少。如果你想保存很少的数据然后去保存它,但如果你有大量的数据,那么不喜欢使用共享偏好。 在按钮单击时从服务器检索数据时将数据存储在数据库中,并在需要时将其检索。

为了解决您的问题,您将“listitems”保存在您保存数据的地方,所以只需将其设置为静态,并尝试解决您的问题。

以上两点都必须适用于您的方案。