簡體   English   中英

在微調器上獲取所選項目將不起作用

[英]Get selected item on spinner won't work

我試圖從微調器上基於數據庫的選定項目中檢索數據。 這是我的數據庫結構 數據庫結構

這是我的活動:

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) {



}

}

這是我從數據庫檢索數據的方法:

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; 

} 

因此,當用戶在微調器上選擇了一個項目時,基於所選的微調器上的英雄名稱,nama_hero處的數據將顯示在列表視圖中。 但是,當我運行我的代碼時,它只是顯示了數據庫中的數據頂部,因此當我在微調器上選擇名稱Sven時,在listview上顯示的名稱不是“ sven”而是“ bristleback”。 當我選擇其他英雄名稱時,也發生了這種情況。

我認為我無法在微調器中獲取所選項目的名稱的方法

請幫助我解決此問題。

解決了 !!!

做完了! 我已經解決了這個問題,謝謝stackoverflow我將setOnclickListener變成了這樣的b1.setOnClickListener(this);

並將之前的所有項目移至:

public void onClick(View v) {


}

嘗試 ClickListener獲取選定的項目

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM