2014-02-28 2 views
0

할 일을 입력하고 수정할 수있는 응용 프로그램을 만들고 있습니다. 현재 내가 만든 목록에서 작업을 볼 수 있지만 목록을 클릭하면 다른 항목은 표시되지 않지만 제목 만 표시됩니다. 내가 제공되는 정보가 무엇인지 볼 수 있도록SQLite로 ListView 채우기

mSaveButton = (ImageButton) findViewById(R.id.diaryform_ib_save); 
    Log.i(TAG,"Field Title: "+ mTitle); 
    Intent showTitle = getIntent(); 
    String fieldTitle = showTitle.getStringExtra(Constants.DIARY_TITLE); 
    Log.i(TAG,"Field Title 2: "+ fieldTitle); 
    mTitle.setText(fieldTitle); 

    Intent showEntry = getIntent(); 
    String fieldEntry = showEntry.getStringExtra(Constants.DIARY_ENTRY); 
    mEntry.setText(fieldTitle); 
    Log.i(TAG,"Field Entry: "+ mEntry); 
    Log.i(TAG,"Field Entry 2: "+ fieldEntry); 

내가 거기에 로그 메시지가 : 입력 화면 내에서

나는 이전의 정보와 함께 입력 화면을 채 웁니다 코드가 있습니다. fieldTitle의 경우 제목이 전달되고 fieldEntry의 경우 null이 전달됩니다. 두 fieldTitle을 모두 만들면 두 필드 모두 제목으로 채워집니다. 내 ListActivity 클래스 내에서

나는 다음과 같은 코드가있다 : 나는 시도 diaryDataColumns 문자열을 만들

diaryDAO = new DAO(this); //Creates an instance of the DAO 
    Cursor diaryCursor = diaryDAO.queryDiary(Diary.DiaryItem.LIST_PROJECTION, null, null); 
    Log.i(TAG, "I get to here!"); 
    String[] diaryDataColumns = { Diary.DiaryItem.COLUMN_NAME_DIARY_TITLE,Diary.DiaryItem.COLUMN_NAME_DIARY_ENTRY }; 
    Log.i(TAG, "Also here"); 
    int[] viewIDs ={ R.id.textView1 }; 
    Log.i(TAG, "Diary Data Col" +diaryDataColumns); 
    Log.i(TAG, "I'm here"); 

    //Creates backing adapter for the ListView 
    @SuppressWarnings("deprecation") s 
    SimpleCursorAdapter diaryAdapter= new SimpleCursorAdapter(
       this,        
       R.layout.activity_diary_list,  
       diaryCursor,      
       diaryDataColumns,      
       viewIDs      
    ); 
    Log.i(TAG, "Now im here"); 

    this.setListAdapter(diaryAdapter); 

는 Diary.DiaryItem.COLUMN_NAME_DIARY_ENTRY를 추가 할 때 I는 입력 화면에서 보여하지만하지 않습니다 Diary.DiaryItem.COLUMN_NAME_DIARY_TITLE을 목록보기로 등록시키고 항목에 제공된 항목을 표시하도록 변경하십시오.

아이디어가 있으십니까? 내가 뭘 잘못하고 있는지 혼란스러워.

감사

편집 : 그것은 나에게 보인다

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    Intent openItem = new Intent(this, DiaryEntryActivity.class); 
    Cursor listCursor = (Cursor)l.getAdapter().getItem(position); 
    openItem.putExtra(Constants.DIARY_TITLE, listCursor.getString(1)); 
    startActivity(openItem); //Starts the intent actions 
} 
+1

getIntent를 여러 번 호출 할 필요가 없습니다. 다른 활동에서 데이터를 의도로 추가하는 방법, 코드를 표시하는 방법 –

답변

0

당신이 두 개의 열이 있지만 하나의 텍스트 뷰를 제공합니다. 첫 번째 주어진 열 데이터는 텍스트보기에 채워지지만 첫 번째 열에는 데이터가 없지만 두 번째 열에는 데이터가 포함되어 있으며 데이터를 전환하면 해당 데이터가 텍스트보기로 채워집니다. 2 개의 textView로 시험해보십시오. 하지만 콘텐츠 공급자와 함께 일하는 것이 효과적이라고 생각합니다. vogella.com에 관한 좋은 자습서가 있습니다.

0

SQLite를 사용하고 있으므로 SQLiteOpenHelper을 사용하는 것이 좋습니다. 일반적으로이 클래스를 Android API에서 하위 클래스로 만든 다음이를 사용하여 ContentProvider을 구현합니다. ContentProvider 하위 클래스는 을 앱에 전달하며 CursorAdapter으로 사용할 수 있습니다. SimpleCursorAdapter으로 시작하여 거기에서 사용자 지정하는 것이 좋습니다. 당신은 또한 CursorLoader에 대해 배워야하는데,이 스레드는 별도의 스레드에서 데이터베이스의 데이터를로드 할 수있게합니다. 자세한 내용은 http://developer.android.com/guide/topics/ui/layout/listview.html을 참조하십시오.