Reputation: 79
I was tried to retrieve data from database based selected item on spinner. Here is my 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
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
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