2011-09-25 2 views
0

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))); 

      } 
    } 

당신의 사람이 나를 찾을 수 있습니다 문제?

+0

데이터베이스에 RowID 열이 있습니까? –

+0

그래, 내가 가지고있다 – unnamet

+0

내 편집을 확인하십시오. –

답변

0

귀하의 onListItemClick()이 같아야합니다 ..

@Override 
public void onListItemClick(ListView list, View view, int position, long id){ 
    Intent i = new Intent(meeting_list.this, ACTIVITY.class); 


    i.putExtra(ID_EXTRA, String.valueOf(id)); 


    startActivity(i); 
} 

을 다음 활동에서 단지 ID를 검색 할 수 있습니다.

또한 여기 통과 액티비티

통과를 검색되고 보장하도록 ID를 기록하는 로그 메시지를 넣어.

ID = getIntent().getStringExtra(ACTIVITY.ID_EXTRA); 

// 사용이 커서

public void load(){ 
    Cursor c = helper.getByID(meetingId); 

로 데이터를로드하는 getById에 데이터베이스의 방법이 있어야한다(). 이처럼 ..

public Cursor getByID(String id){ 
    String [] args={id}; 

    return(getReadableDatabase().rawQuery("SELECT _id, meetingTitle, meetingDescrip, meetingAdress, meetingDateTime, lat, lon, type FROM meetings WHERE _ID=?", args)); 

그냥 광산에 대한 귀하의 반환 인수의의를 대체합니다.

+0

ID_EXTRA가 내 rowid입니까? 문제는 이드를 찾는 데 있다고 생각합니다. 제가 위에 게시 한 코드를 살펴볼 수 있습니까? – unnamet

+0

가장 좋은 경로는 위에 게시 된 ive입니다. 필자는 그것을 편집했다. –

관련 문제