2012-09-27 4 views
0

나는 사용자가 친구의 개인 정보를 입력하고 SQLite 데이터베이스에 저장하는 응용 프로그램에서 작업하고 있습니다. 그런 다음 사용자는 다른 페이지 (활동)에서 친구의 정보를 볼 수 있습니다. 그러나 사용자가 친구의 정보를 볼 필요가있을 때는 두 번째 활동에 표시되지 않습니다. 정보는 데이터베이스 테이블에서 검색해야합니다. 어떻게해야합니까?
첫 번째 활동 - -데이터베이스 테이블의 데이터를 Android TextView에 어떻게 표시합니까?

public class PersonalInformation extends Activity 
{ 
    EditText txtLikes, txtDislikes, txtType, txtDate; 
    Button btnView, btnBack; 
    Spinner nameSpinner;  

    ArrayAdapter<String> adapter; 
    String friends[] = {"Kanak Priya", "Joanne Liew", "Melissa Haiting", "Michelle Lam", "Teo Kin Hua", "David Yeo", "Nur Ashiqin", "Stephanie"}; 

    final Context context = this; 

    private int namesSpinnerId;   

    LikesDBAdapter likeDB = new LikesDBAdapter(this); 
    DislikesDBAdapter dlikeDB = new DislikesDBAdapter(this); 


    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.info); 

     nameSpinner = (Spinner) findViewById(R.id.nameSpinner); 

     adapter = new ArrayAdapter<String>(this, 
       R.layout.spinner_text, friends); 
     nameSpinner.setAdapter(adapter); 

     /*BuddyDBAdapter buddyDB = new BuddyDBAdapter(this); 
    // buddyDB.open(); 

     Cursor friendsCursor = buddyDB.getAllNames(); 
     startManagingCursor(friendsCursor); 

     String[] from = new String[]{BuddyDBAdapter.KEY_NAME}; 
     int[] to = new int[]{R.id.name}; 

     SimpleCursorAdapter friendsCursorAdapter = new SimpleCursorAdapter(this, R.layout.spinner_text, friendsCursor, from, to); 
     friendsCursorAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     nameSpinner = (Spinner)findViewById(R.id.nameSpinner); 
     nameSpinner.setAdapter(friendsCursorAdapter); 
     //buddyDB.close(); 


     nameSpinner.setOnItemSelectedListener(new OnItemSelectedListener() 
      { 
       @Override 
       public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) 
       { 
        Cursor c = (Cursor)parent.getItemAtPosition(pos); 
        namesSpinnerId = c.getInt(c.getColumnIndexOrThrow(BuddyDBAdapter.KEY_ROWID)); 
       } 

       @Override 
       public void onNothingSelected(AdapterView<?> parent) 
       { 
        // TODO Auto-generated method stub 

       } 
      }); 
     //buddyDB.close(); 
*/  
     Button btnSave = (Button) findViewById(R.id.btnSave); 
     btnSave.setOnClickListener(new View.OnClickListener() 
      { 

       @Override 
       public void onClick(View v) 
       { 
        likeDB.open(); 
        long like_id; 

        nameSpinner = (Spinner) findViewById(R.id.nameSpinner); 
        String NameValue = nameSpinner.getSelectedItem().toString(); 

        txtLikes = (EditText) findViewById(R.id.txtLikes); 
        String LikeValue = txtLikes.getText().toString(); 



        like_id = likeDB.insertLikes(LikeValue, NameValue); 
        likeDB.close(); 

        dlikeDB.open(); 
        long dlike_id; 

        nameSpinner = (Spinner) findViewById(R.id.nameSpinner); 
        String NamesValue = nameSpinner.getSelectedItem().toString(); 

        txtDislikes = (EditText) findViewById(R.id.txtDislikes); 
        String DislikeValue = txtDislikes.getText().toString(); 

        dlike_id = dlikeDB.insertDislikes(DislikeValue, NamesValue); 
        dlikeDB.close(); 

        txtDate = (EditText) findViewById(R.id.txtDate); 
        txtType = (EditText) findViewById(R.id.txtType);      
        txtLikes = (EditText) findViewById(R.id.txtLikes); 
        txtDislikes = (EditText) findViewById(R.id.txtDislikes); 

        if(txtDate.getText().toString().length() == 0 || txtType.getText().toString().length() == 0 || 
          txtLikes.getText().toString().length() == 0 || txtDislikes.getText().toString().length() == 0) 

        { 
         txtDate.setError("Please key in the date"); 
         txtType.setError("Please key in category"); 
         txtLikes.setError("Please key in their likes"); 
         txtDislikes.setError("Please key in their dislikes"); 
        } 
        else 
        { 
         Toast.makeText(getBaseContext(), "Your information is saved successfully! :D", Toast.LENGTH_LONG).show(); 
        }             
       } 
      }); 

     btnBack = (Button) findViewById(R.id.btnMain); 
     btnBack.setOnClickListener(new View.OnClickListener() 
      { 

       @Override 
       public void onClick(View arg0) 
       { 
        finish(); 

       } 
      }); 

     btnView = (Button) findViewById(R.id.btnView); 
     btnView.setOnClickListener(new View.OnClickListener() 
      { 

       @Override 
       public void onClick(View v) 
       { 
        nameSpinner = (Spinner) findViewById(R.id.nameSpinner); 
        EditText txtDate = (EditText) findViewById(R.id.txtDate); 
        EditText txtType = (EditText) findViewById(R.id.txtType); 
        EditText txtLikes = (EditText) findViewById(R.id.txtLikes); 
        EditText txtDislikes = (EditText) findViewById(R.id.txtDislikes); 

        Intent i = new Intent(PersonalInformation.this, SavedInfo.class);     
        Bundle b = new Bundle(); 
        b.putString("name", nameSpinner.getSelectedItem().toString()); 
        b.putString("date", txtDate.getText().toString()); 
        b.putString("category", txtType.getText().toString()); 
        b.putString("likes", txtLikes.getText().toString()); 
        b.putString("dislikes", txtDislikes.getText().toString()); 
        i.putExtras(b); 
        startActivity(i); 
       } 
      }); 

     EditText txtDate = (EditText) findViewById(R.id.txtDate); 
     txtDate.setHint("birthdate or wedding date"); 
     txtDate.setFilters(new InputFilter[] { 
       new InputFilter() { 

        @Override 
        public CharSequence filter(CharSequence source, int start, 
          int end, Spanned dest, int dstart, int dend) 
        { 
         if(source.equals("")) 
         { 
          return source; 
         } 
         if(source.toString().matches("[0-9 -]+")) 
         { 
          return source; 
         } 
         return ""; 
        } 

       } 
      }); 

     EditText txtType = (EditText) findViewById(R.id.txtType); 
     txtType.setHint("birthday or wedding"); 
     txtType.setFilters(new InputFilter[] { 
       new InputFilter() { 

        @Override 
        public CharSequence filter(CharSequence source, int start, 
          int end, Spanned dest, int dstart, int dend) 
        { 
         if(source.equals("")) 
         { 
          return source; 
         } 
         if(source.toString().matches("[birthday wedding Birthday Wedding BIRTHDAY WEDDING]+")) 
         { 
          return source; 
         } 
         return ""; 
        } 

       } 
      }); 

     EditText txtLikes = (EditText) findViewById(R.id.txtLikes); 
     txtLikes.setHint("e.g. Skating, Photography separate by comma"); 
     txtLikes.setFilters(new InputFilter[] { 
       new InputFilter() { 

        @Override 
        public CharSequence filter(CharSequence source, int start, 
          int end, Spanned dest, int dstart, int dend) 
        { 
         if(source.equals("")) 
         { 
          return source; 
         } 
         if(source.toString().matches("[a-z A-Z -]+")) 
         { 
          return source; 
         } 
         return ""; 
        } 

       } 
      }); 

     EditText txtDislikes = (EditText) findViewById(R.id.txtDislikes); 
     txtDislikes.setHint("e.g. Skating, Photography separate by comma"); 
     txtDislikes.setFilters(new InputFilter[] { 
       new InputFilter() { 

        @Override 
        public CharSequence filter(CharSequence source, int start, 
          int end, Spanned dest, int dstart, int dend) 
        { 
         if(source.equals("")) 
         { 
          return source; 
         } 
         if(source.toString().matches("[a-z A-Z -]+")) 
         { 
          return source; 
         } 
         return ""; 
        } 

       } 
      }); 


    } 
} 

2 활동

public class SavedInfo extends Activity 
{ 
    final Context context = this; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.saved_info); 

     Bundle b = this.getIntent().getExtras(); 
     String name = b.getString("name"); 
     String date = b.getString("date"); 
     String category = b.getString("category"); 
     String likes = b.getString("likes"); 
     String dislikes = b.getString("dislikes"); 

     ((TextView)findViewById(R.id.textName)).setText(name); 
     ((TextView)findViewById(R.id.textDate)).setText(date); 
     ((TextView)findViewById(R.id.textType)).setText(category); 
     ((TextView)findViewById(R.id.textLikes)).setText(likes); 
     ((TextView)findViewById(R.id.textDislikes)).setText(dislikes); 

     Button btnEdit = (Button) findViewById(R.id.btnEdit); 
     btnEdit.setOnClickListener(new View.OnClickListener() 
      { 

       @Override 
       public void onClick(View v) 
       { 
        Intent backIntent = new Intent(context, PersonalInformation.class); 
        startActivity(backIntent); 

       } 
      }); 

     Button btnBack = (Button) findViewById(R.id.btnMain); 
     btnBack.setOnClickListener(new View.OnClickListener() 
      { 

       @Override 
       public void onClick(View v) 
       { 
        Intent menuIntent = new Intent(context, MainPage.class); 
        startActivity(menuIntent); 
       } 
      }); 
    } 

} 

가 텍스트 뷰
내가 겠지만 2 차 활동에 데이터베이스 테이블에서 데이터를 검색하는 방법을 제발 도와주세요 여기

는 코드입니다 제공된 도움을 주시면 감사하겠습니다. 미리 감사드립니다! =)

+0

두 번째 활동에 데이터가 표시되지 않습니까? –

+0

오, 나는 사용자의 친구 정보를 입력하고 정보를 보았을 때 두 번째 활동에 세부 정보가 표시되어야한다고 말했어야만합니다. 그러나 사용자가 첫 번째 활동으로 돌아가서 동일한 친구를 선택하고 그가 입력 한 정보를 볼 경우 데이터는 데이터베이스 테이블에 표시되어야합니다. 내 말 뜻을 이해하거나 이해하지 못하면 알려주세요. 감사합니다 – Preeyah

+0

logcat에서 경고/오류가 두 번째 발생합니까? –

답변

1

내가 올바르게 이해했다면, 다음은 쿼리에 대한 SQLite 데이터베이스의 결과를 추출하는 코드 단편입니다. 이 도움을 주면 도움이 될 것입니다.

// Access Database to fetch info 
try { 
    newDB = myDbHelper.getReadableDatabase(); 

    String query = "SELECT * FROM tbl_name WHERE...... = "; 
    Cursor c = newDB.rawQuery(query,null); 

    if (c != null) { 
     if (c.moveToFirst()) { 
      do { 
       Bean infoBean = new infoBean(); 
       infoBean.firstName = c.getString(c.getColumnIndex("firstName")); 
       infoBean.lastName = c.getInt(c.getColumnIndex("lastName")); 
       infoBean.id = c.getInt(c.getColumnIndex("_id")); 

       // Do something here to display information in TextView 

      } while (c.moveToNext()); 
     } 
    }   
} catch (SQLiteException se) { 
    Log.e(getClass().getSimpleName(), "Could not create or Open the database"); 
} 

myDbHelper.close(); 
+0

테이블에서 데이터를 가져올 수있는 링크를 따라 가셔서 감사합니다. 대답. Bean이 왜 & 왜 사용되었는지 알 수 있습니까? – Preeyah

+0

@MiyayayayaMi : 기본적으로 자바 빈은 단지 표준입니다. 1) 모든 속성 private (getters/setters 사용) 2) public 인수가없는 생성자 3) Serializable을 구현합니다. 따라서 정규 클래스와 java bean 사이에는 구문상의 차이가 없습니다.클래스는 위의 표준을 따르는 경우 Java bean을 정의합니다. –

+0

아 맞아, 자바 빈이야. 하지만 안드로이드 코딩에도 사용할 수 있습니까? – Preeyah

관련 문제