2 개의 뷰가있는 프로그램을 만들려고합니다. 첫 번째보기는 데이터베이스에서 채워지는 목록입니다. 내가 원하는 것은 목록의 항목을 클릭하면 프로그램이 두 번째보기를 열고 클릭 한 항목에 따라 데이터베이스의 데이터로 일부 textviews를 채우기를 원합니다. 내가 지금했던 것은 다음과 같이 찾고 :DB rowid에서 textviews를 채우는 데 문제가 발생했습니다.
첫 번째보기 :
이보기를 열하지만 doesent해야public class MainActivity extends ListActivity {
private static final int ACTIVITY_VIEW = 1;
private DbAdapter mDbHelper;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mDbHelper = new DbAdapter(this);
mDbHelper.open();
fillData();
}
private void fillData()
{
Cursor contactCursor = mDbHelper.fetchAllContact();
startManagingCursor(contactCursor);
String[] from = new String[]{DbAdapter.KEY_FIRST};
int[] to = new int[]{R.id.contactlist};
SimpleCursorAdapter contactsfirst = new SimpleCursorAdapter(this, R.layout.list, contactCursor, from, to);
setListAdapter(contactsfirst);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Intent i = new Intent(this, PersonPage.class);
i.putExtra(DbAdapter.KEY_ROWID, id);
startActivityForResult(i, ACTIVITY_VIEW);
}
:
public class PersonPage extends Activity
{
private EditText mFirstText;
private EditText mLastText;
private EditText mPhoneText;
private EditText mMPhoneText;
private EditText mRoomText;
private EditText mInitialText;
private Button mBackButton;
private Long mRowId;
String back = new String("Back");
String na = new String("N/A");
private DbAdapter mDbHelper;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
mDbHelper = new DbAdapter(this);
mDbHelper.open();
setContentView(R.layout.personpage);
mFirstText = (EditText) findViewById(R.id.first);
mLastText = (EditText) findViewById(R.id.last);
mPhoneText = (EditText) findViewById(R.id.phone);
mMPhoneText = (EditText) findViewById(R.id.mphone);
mRoomText = (EditText) findViewById(R.id.room);
mInitialText = (EditText) findViewById(R.id.initial);
mBackButton = (Button) findViewById(R.id.back);
mRowId = (savedInstanceState == null) ? null :
(Long) savedInstanceState.getSerializable(DbAdapter.KEY_ROWID);
if (mRowId == null) {
Bundle extras = getIntent().getExtras();
mRowId = extras != null ? extras.getLong(DbAdapter.KEY_ROWID)
: null;
populateFields();
mBackButton.setOnClickListener(new TextView.OnClickListener() {
public void onClick(View arg0) {
Intent i = new Intent(PersonPage.this, MainActivity.class);
PersonPage.this.startActivity(i);
}
});
}
}
private void populateFields() {
if (mRowId != null) {
Cursor note = mDbHelper.fetchContact(mRowId);
startManagingCursor(note);
mFirstText.setText(note.getString(
note.getColumnIndexOrThrow(DbAdapter.KEY_FIRST)));
mLastText.setText(note.getString(
note.getColumnIndexOrThrow(DbAdapter.KEY_LAST)));
mPhoneText.setText(note.getString(
note.getColumnIndexOrThrow(DbAdapter.KEY_PHONE)));
mMPhoneText.setText(note.getString(
note.getColumnIndexOrThrow(DbAdapter.KEY_MPHONE)));
mRoomText.setText(note.getString(
note.getColumnIndexOrThrow(DbAdapter.KEY_ROOM)));
mInitialText.setText(note.getString(
note.getColumnIndexOrThrow(DbAdapter.KEY_INITIAL)));
}
}
당신의 사람이 나를 찾을 수 있습니다 문제?
데이터베이스에 RowID 열이 있습니까? –
그래, 내가 가지고있다 – unnamet
내 편집을 확인하십시오. –