2015-06-20 26 views
0

我有叫PrimaryData的數據庫,包括字段PrimaryDataIdPrimaryDataCode。我的問題是,當從數據庫中光標返回數據,微調沒有設置的的值的表光標爲什麼不設置Spinner Android的值。我使用光標?

XML文件微調

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:padding="10dp" 
    android:textSize="14sp" 
    android:textColor= "#000000" 
    android:spinnerMode="dialog" /> 

PrimaryData類中把PrimaryDataId和PrimaryDataCode。這個類相當於一個數據庫表。

package com.example.proposaldashborad; 

public class PrimeryData { 
    private int primeryDataId; 
    private String primeryDataCode; 


    @Override 
    public String toString() { 
     return this.primeryDataCode; // What to display in the Spinner list. 
    } 

    public int getPrimaryDataId() { 
     return primeryDataId; 
    } 

    public void setPrimaryDataId(int value) { 
     this.primeryDataId = value; 
    } 

    public int getPrimaryDataCode() { 
     return primeryDataId; 
    } 

    public void setPrimaryDataCode(String value) { 
     this.primeryDataCode = value; 
    } 
} 

這段代碼填寫微調

private void GetPrimaryDataForSpinner(String primaryDataName, Cursor cr) { 
    cr.moveToFirst(); 
    //array_spinner = new String[cr.getCount()]; 
    ArrayList<PrimeryData> pds = new ArrayList<PrimeryData>() ; 

    do { 
     //array_spinner[i] = cr.getString(cr.getColumnIndex("PrimeryDataCode")); 

     PrimeryData pd = new PrimeryData() ; 
     pd.setPrimaryDataId(cr.getInt(cr.getColumnIndex("PrimeryDataId"))); 
     pd.setPrimaryDataCode(cr.getString(cr.getColumnIndex("PrimeryDataCode"))); 
     pds.add(pd) ; 

    } while (cr.moveToNext()); 

    cr.close(); 

    if (primaryDataName == "Admin") { 
     adapterAdmin = new ArrayAdapter<PrimeryData>(this,R.layout.spinner, pds); 
     sAdmin = (Spinner) findViewById(R.id.spinnerAdmin); 
     sAdmin.setAdapter(adapterAdmin);   
    } 
} 

這是我的代碼當數據從數據庫返回。

private Spinner sAdmin; 
    private ArrayAdapter<PrimeryData> adapterAdmin; 
    db = new DBAdapter(getApplicationContext()); 
    db.open(); 
    cr = db.getViewMT26(entityID); 
    cr.moveToFirst(); 

    if(cr.getCount()>0) { 
       PrimeryData pd = new PrimeryData(); 
       pd.setPrimaryDataId(cr.getInt(cr.getColumnIndex("AdminId"))); 
        pd.setPrimaryDataCode(cr.getString(cr.getColumnIndex("Admin"))); 
        sAdmin.setSelection(adapterAdmin.getPosition(pd)); 
      } 
    cr.close(); 
    db.close(); 

我的主要問題是,爲什麼

adapterAdmin.getPosition(PD));

返回-1?

+0

設定值當你intializing adapterAdmin? –

+0

你在說什麼光標?在你的代碼中沒有光標... – pskink

+0

mr/mrs Nag --->代碼不寫在這裏。但adapterAdmin填充 –

回答

0

您必須初始化您的adapterAdmin,並通過setAdapter方法將其設置爲您的微調器。 此外,如果您只使用PrimeryData列表,則每個微調項目上顯示的文本將爲PrimeryData(instance)toString()。

0

關注這個代碼在微調

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemSelectedListener; 
import android.widget.ArrayAdapter; 
import android.widget.Spinner; 
import android.widget.TextView; 

public class MainActivity extends Activity implements OnItemSelectedListener { 
Spinner spinnerOsversions; 
TextView selVersion; 
private String[] state = { "Cupcake", "Donut", "Eclair", "Froyo", 
    "Gingerbread", "HoneyComb", "IceCream Sandwich", "Jellybean", 
    "kitkat" }; 

    @Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    System.out.println(state.length); 
    selVersion = (TextView) findViewById(R.id.selVersion); 
    spinnerOsversions = (Spinner) findViewById(R.id.osversions); 
    ArrayAdapter<String> adapter_state = new ArrayAdapter<String>(this, 
    android.R.layout.simple_spinner_item, state); 
    adapter_state 
    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinnerOsversions.setAdapter(adapter_state); 
    spinnerOsversions.setOnItemSelectedListener(this); 

    } 

    public void onItemSelected(AdapterView<?> parent, View view, int position, 
    long id) { 
    spinnerOsversions.setSelection(position); 
    String selState = (String) spinnerOsversions.getSelectedItem(); 
    selVersion.setText("Selected Android OS:" + selState); 
} 

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

    } 

} 
+0

謝謝你花時間但是這個答案與我的問題無關。 Spinner已經完成了數據,現在我想通過** cursor **選擇一行ArrayAdapter。我不想在snipper中選擇一個值時獲取它。 –

+0

感謝您重播我使用了與您相同的代碼,我在Spinner中使用了set country Name,我從數據庫中獲取國名,並在Spinner中使用。如果你想的話,會爲你發佈。謝謝。 –

+0

如果你這樣做,你會非常感激。我的電子郵件地址是[email protected] –

相關問題