0

我正在创建一个动态列表视图,我不需要数据库来存储数据,无论我添加什么数据,它都必须显示在我的列表视图中。现在它没有显示在我的列表视图中。项目列表活动.java

public class Prayers extends ListActivity{
    private static final int ACTIVITY_CREATE=0;

    /** Items entered by the user is stored in this ArrayList variable */
    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_prayers_list);

        fillData();
        registerForContextMenu(getListView());

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

        //btn.setOnClickListener(listener);

        /** Setting the adapter to the ListView */
        setListAdapter(adapter);



    }

    private void fillData() {

    }

    @Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {
        switch(item.getItemId()) {
        case R.id.menu_insert: 
            createProject();
            return true; 

        }

        return super.onMenuItemSelected(featureId, item);
    }
    private void createProject() {
        Intent i = new Intent(this, PrayersEditActivity.class);
        startActivityForResult(i, ACTIVITY_CREATE);   
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_prayers_list, menu);
        return true;
    }



}

这是我的项目editactivity.java

public class PrayersEditActivity extends Activity{
    private EditText mTitleText;
     private Button mConfirmButton;

     @Override
        protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_prayers_edit);

             mTitleText = (EditText) findViewById(R.id.title);
             mConfirmButton = (Button) findViewById(R.id.confirm);



             registerButtonListenersAndSetDefaultText();    
     }
     private void registerButtonListenersAndSetDefaultText() {
         mConfirmButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //saveState(); 

                    String title = mTitleText.getText().toString();
                    mTitleText.setText("");

                    //adapter.notifyDataSetChanged(); 

                    setResult(RESULT_OK);
                    Toast.makeText(PrayersEditActivity.this, getString(R.string.task_saved_message), Toast.LENGTH_SHORT).show();
                    finish(); 
                }

            });
     }
         /*private void saveState() {
             //mTitleText = (EditText) findViewById(R.id.title);
             String title = mTitleText.getText().toString();

             mTitleText.setText("");
             adapter.notifyDataSetChanged();
         }*/



}

在我的列表视图中,如果我单击菜单按钮,它必须转到编辑页面,在他们单击保存按钮后我必须添加项目,它必须显示在我的列表视图中,现在它不显示在我的列表视图中。

4

4 回答 4

2

startActivityForResult(i, 1); 并覆盖此方法

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

  if (requestCode == 1) {

     if(resultCode == RESULT_OK){      
         String result=data.getStringExtra("result"); 
         list.add(result);
         adapter.notifyDataSetChanged();
     }
     if (resultCode == RESULT_CANCELED) {    
         //Write your code if there's no result
     }
   }
 }

在您的 projecteditactivity.java 中将 onClick 更改为以下代码

@Override
            public void onClick(View view) {


                String title = mTitleText.getText().toString();
                mTitleText.setText("");                   


                 Intent returnIntent = new Intent();
                 returnIntent.putExtra("result",title);
                 setResult(RESULT_OK,returnIntent);    

                finish(); 
            }
于 2013-05-16T10:55:19.163 回答
0

为什么不能将数据存储在文件中,这样,当应用程序进入后台时,您可以检索它,并在一段时间后,如果发生内存丢失,您可以从文件中检索它。我曾经将数据保存在 Json 格式的字符串中,不知道如何以及从何处获取列表数据。

于 2013-05-16T09:39:48.503 回答
0

使用 ondestroy、onpause 和 onresume 方法保存数据。第二个选项是使用 sharedprefence 或 sqlite 保存数据。

于 2013-05-16T10:24:31.140 回答
0

您可以使用 life_cycle 功能。此外,您可以在活动之间传输数据。这样就可以使用编辑数据来显示了。

于 2013-05-16T09:51:32.717 回答