如何在不使用数据库的情况下检索数据,它必须在listview中显示

时间:2013-05-16 09:37:08

标签: java android

我正在创建一个动态列表视图我不需要数据库来存储数据,无论我添加数据,它都必须显示在我的列表视图中。现在它没有显示在我的列表视图中。 Projectlistactivity.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;
    }



}

这是我的projecteditactivity.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 个答案:

答案 0 :(得分: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(); 
            }

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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