Labalumit
Labalumit

Reputation: 79

Get selected item on spinner won't work

I was tried to retrieve data from database based selected item on spinner. Here is my database structure Database Structure

Here is my Activity:

public class help_activity extends Activity implements OnClickListener{

Spinner spinner1;
SQLiteConnector sqlConnect;
ListView lvUsers;
Button b1;



String colors[] = {"Bristleback","Sven","Tiny","Undying", "Naix","Weaver","Spectre","Lich"};    
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_help);
    
    spinner1 = (Spinner) findViewById(R.id.spinner1);
    lvUsers = (ListView) findViewById(R.id.listView1);
    b1 = (Button) findViewById(R.id.btn1);
    sqlConnect = new SQLiteConnector(this);
    addListenerOnSpinnerItemSelection();
    
    final String nameSelected = spinner1.getSelectedItem().toString();      
    
    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(
            this, android.R.layout.simple_list_item_1, sqlConnect.getAllRecord(nameSelected));
    
    b1.setOnClickListener(new OnClickListener() {
        
        @Override
        public void onClick(View v) {
            
            
            if (nameSelected.equals("Bristleback")) {
                lvUsers.setAdapter(adapter);
                adapter.notifyDataSetChanged();
            } 
            else if (nameSelected.equals("Sven")) {
                lvUsers.setAdapter(adapter);
                adapter.notifyDataSetChanged();
            }
            else if (nameSelected.equals("Tiny")) {
                lvUsers.setAdapter(adapter);
            } 
            else if (nameSelected.equals("Undying")) {
                lvUsers.setAdapter(adapter);
                adapter.notifyDataSetChanged();
            }
            else if (nameSelected.equals("Naix")) {
                lvUsers.setAdapter(adapter);
                adapter.notifyDataSetChanged();
            }
            else if (nameSelected.equals("Weaver")) {
                lvUsers.setAdapter(adapter);
                adapter.notifyDataSetChanged();
            }
            else if (nameSelected.equals("Spectre")) {
                lvUsers.setAdapter(adapter);
                adapter.notifyDataSetChanged();
            }
            else if (nameSelected.equals("Lich")) {
                lvUsers.setAdapter(adapter);
                adapter.notifyDataSetChanged();
            }
            // TODO Auto-generated method stub
    
        }
    });
    
    
    
    
    
}
public void addListenerOnSpinnerItemSelection() {
        

        ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>
        (this, android.R.layout.simple_spinner_dropdown_item,colors );
        spinner1.setAdapter(spinnerArrayAdapter);
      }



@Override
public void onClick(View v) {
    
    
    
}
    
}

And this my method to retrieve data from database:

public List<String> getAllRecord(String nameSelected) { 
    
    List<String> namagambar = new ArrayList<String>(); 
    String selectQuery = "SELECT * FROM " + TABLE_RECORD + " WHERE "
    + HERO_NAME + "=?"; 
    
    database = dbHelper.getReadableDatabase(); 
    cursor = database.rawQuery(selectQuery, new String[]{nameSelected}); 
    
    if (cursor.moveToFirst()) { 
        
        do { 
            
            namagambar.add(cursor.getString(1)); 
            } while (cursor.moveToNext()); 
        
    } 
    database.close(); 
    return namagambar; 
    
} 

So, when user selected an item on spinner, then the data at nama_hero will showed at listview based on the selected name hero on spinner. But when i running my code, it just showed the top of data on the database So when i selected name Sven on spinner, the name that showed on listview not "sven" but "bristleback". And it happened also when I choose other hero name.

I think my method to get the name of the selected item in the spinner does not work

Please help me to fix this problem.

Upvotes: 0

Views: 754

Answers (2)

Labalumit
Labalumit

Reputation: 79

Done !! I already solved this problem, thanks stackoverflow I change my setOnclickListener become like this b1.setOnClickListener(this);

And move all the items that were in previous to:

public void onClick(View v) {


}

Upvotes: 1

Hariharan
Hariharan

Reputation: 24853

Try to get selected item inside ClickListener

b1.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            String nameSelected = spinner1.getSelectedItem().toString(); 

Upvotes: 0

Related Questions