如何使用传递给另一个类的列表传递的数据,并将其传递给另一个类?

时间:2012-12-26 12:22:27

标签: android android-intent

好的,我看到很多关于Stack溢出的问题,关于通过意图点击它将数据从列表视图传递到另一个类,但我的问题是不同的。所以我有列表项,当我点击时打开一个笔记类,在列表标题和正文中,标题与点击的列表项相同。在这个类里面,我有一个打开另一个类的按钮,我也需要在这里传递标题,但我不能为我的生活找出它在SQL Lite DB中的位置,它是如何通过以及如何通过它一个按钮。

以下是列表项的onclick监听器:

 @Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    Intent i = new Intent(this, NoteEdit.class);
    i.putExtra(NotesDbAdapter.KEY_ROWID, id);
    startActivityForResult(i, ACTIVITY_EDIT); 
}

以下是获取此内容的类,并显示我需要传递标题数据的标题,正文和按钮,我在按钮上方评论过:

public class NoteEdit extends Activity {

private EditText mTitleText;
private EditText mBodyText;
private Long mRowId;
private NotesDbAdapter mDbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {         

    super.onCreate(savedInstanceState);
    mDbHelper = new NotesDbAdapter(this);
    mDbHelper.open();

    setContentView(R.layout.note_edit);
    setTitle(R.string.edit_note);

    mTitleText = (EditText) findViewById(R.id.title);
    mBodyText = (EditText) findViewById(R.id.body);

    Button confirmButton = (Button) findViewById(R.id.confirm);
    Button button1 = (Button) findViewById(R.id.butt);

    mRowId = (savedInstanceState == null) ? null :
        (Long) savedInstanceState.getSerializable(NotesDbAdapter.KEY_ROWID);
    if (mRowId == null) {
        Bundle extras = getIntent().getExtras();
        mRowId = extras != null ? extras.getLong(NotesDbAdapter.KEY_ROWID)
                                : null;
    }

    populateFields();

    confirmButton.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {
            setResult(RESULT_OK);
            finish();
        }

    });

    //HERE IS THE BUTTON WHICH I USE TO GET TO THE NEXT ACTIVITY, I NEED TO PASS THE DATA IN TITLE FROM HERE!!

    button1.setOnClickListener(new View.OnClickListener() {

         public void onClick(View v) {
                Intent openNext = new Intent("com.timer.RUNNING");
                startActivity(openNext);
            }
            });
}

private void populateFields() {
    if (mRowId != null) {
        Cursor note = mDbHelper.fetchNote(mRowId);
        startManagingCursor(note);
        mTitleText.setText(note.getString(
                note.getColumnIndexOrThrow(NotesDbAdapter.KEY_TITLE)));
        mBodyText.setText(note.getString(
                note.getColumnIndexOrThrow(NotesDbAdapter.KEY_BODY)));

    }
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    saveState();
    outState.putSerializable(NotesDbAdapter.KEY_ROWID, mRowId);
}

@Override
protected void onPause() {
    super.onPause();
    saveState();
}

@Override
protected void onResume() {
    super.onResume();
    populateFields();
}

private void saveState() {
    String title = mTitleText.getText().toString();
    String body = mBodyText.getText().toString();

    if (mRowId == null) {
        long id = mDbHelper.createNote(title, body);
        if (id > 0) {
            mRowId = id;
        }
    } else {
        mDbHelper.updateNote(mRowId, title, body);
    }
  }
 }

我希望这个问题有道理,当我不得不从列表中的onclick转到仍然使用按钮传递信息时,我会陷入困境。非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

使用静态变量。从您的类到您想要去的另一个类的变量中设置值。这可能对你有所帮助

答案 1 :(得分:1)

将标题数据发送到下一个活动:

   button1.setOnClickListener(new View.OnClickListener() {

      public void onClick(View v) {
           //Intent openNext = new Intent("com.timer.RUNNING");
           Intent openNext = new Intent(Current_Activity.this,NextActivity.this);
           openNext.putExtra("title",mTitleText.getText().toString());
           startActivity(openNext);
          }
     });