2017-12-19 35 views
1

사용자가 스피너에서 이름을 선택하고 txtbox에 메시지를 입력 한 다음 메시지를 보내기 위해 버튼을 클릭해야하는 활동을 만들었습니다. 스피너에는 두 개의 문자열이 있습니다 (처음에는 & 성). 데이터베이스의 각 이름에 대해 고유 한 ID가 있습니다. 데이터베이스에서 이름의 ID를 얻으려면 어떻게해야합니까?스피너에서 선택한 항목의 ID를 얻으려면 어떻게해야합니까?

데이터 예 : ID : 265958998,하고 Fname : 레오, LNAME :

void insertMessage(String sender, String recipient) { 
    SQLiteDatabase db = DBHelper.getWritableDatabase(); 

    ContentValues initialValues = new ContentValues(); 
    initialValues.put(KEY_SENDER, sender); 
    initialValues.put(KEY_RECIPIENT, recipient); 
    db.insert(TABLE_MESSAGE, null, initialValues); 


    db.close(); // Closing database connection 
} 
: DB에

  btnsend.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
       String USERID=getIntent().toString(); 

       db.open(); 
      *// db.insertMessage(USERID, );* 
       db.close(); 

       et10.setText(""); 
       Toast.makeText(getApplicationContext(), 
         "Message Sent", Toast.LENGTH_SHORT).show();}} 
      }); 

삽입 메시지 : 다음은 크루즈

내 코드는

보내기 버튼입니다

스피너 쿼리 :

  public List<String> getAllRegisteredInfoAcc(){ 
    List<String> labels = new ArrayList<String>(); 

    // Select All Query 
    String selectQuery = "SELECT tableinfo.*, tableacc.*" + 
      "FROM tableinfo JOIN tableacc ON tableinfo.userid = tableacc.userid WHERE tableacc.userstatus=? "; 
    Cursor cursor = db.rawQuery(selectQuery , new String[]{ "REGISTERED"}); 

    SQLiteDatabase db = DBHelper.getReadableDatabase(); 
    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
     do { 
      labels.add(cursor.getString(4)+""+cursor.getString(3)); 
     } while (cursor.moveToNext()); 
    } 

    // closing connection 
    cursor.close(); 
    db.close(); 
    return labels; 
} 

CallSpinner : 당신은, 회 전자에 대한 어댑터을 Object의 배열에 sqlite가에서 데이터를로드하고 축복하는 스피너에 반영되는 배열의 객체를 매핑해야

 spn1(); 

} 
public void spn1() { 
    // database handler 
    DBAdapter db = new DBAdapter(getApplicationContext()); 
    List<String> lables = db.getAllRegisteredInfoAcc(); 
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_item, lables); 

    dataAdapter.setDropDownViewResource 
     (android.R.layout.simple_spinner_dropdown_item); 
    spnr1.setAdapter(dataAdapter); 
} 

답변

0

toString() 함수.

가 우선 오브젝트에 대한 클래스를 생성하고 추가 있으며, toString() 함수

public class MyUser { 
private int id = 0; 
private String name = ""; 
private String lastName =""; 

public MyUser(){} 


public String toString() 
{ 
    return(name + " " + lastName); 
} 

} 

을이어서 해당 오브젝트의 배열로이 sqlite로부터 데이터를로드.

spnr1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) { 
       if (position > 0) { //because of the prompt 
        userID = users.get(position - 1).getUserId(); 
        // DO WHAT YOU WANT 
       } 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> adapterView) { 

      } 
     }); 
0

보내기 버튼 리스너 :

  btnsend.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String USERID=getIntent().toString(); //userid from login activity 
       int a = spinnername.getSelectedItemPosition(); 

       Cursor data = database.getallUsers(); 
       data.moveToPosition(a); 

       database.open(); 
       //insert sender, recipient, message... 
       database.insertMessage(USERID,data.getString(0) ,et10.getText().toString()); 

       database.close(); 
       et10.setText(""); 
       Toast.makeText(getApplicationContext(), 
         "Message Sent", Toast.LENGTH_SHORT).show(); 
      }}); 

그리고 스피 onItemClickListener에 따라서

users.addAll(myDataSource.getUsers()); 

     ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, users); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spnr1.setPrompt("Select your User"); 
     spnr1.setAdapter(
       new NothingSelectedSpinnerAdapter(
         adapter, 
         R.layout.row_state_register_nothing_selected, 
         // R.layout.contact_spinner_nothing_selected_dropdown, // Optional 
         this)); 

()에서