为什么不设置微调了Android的价值。我使用游标? [英] Why not set the value of Spinner Android. i use Cursor?

查看:156
本文介绍了为什么不设置微调了Android的价值。我使用游标?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个表中称为数据库的 PrimaryData 其中包含字段的 PrimaryDataId PrimaryData code 。我的问题是,当在光标从数据库返回数据,微调不设置光标在

I have a table in the database called PrimaryData Which includes fields are PrimaryDataId and PrimaryDataCode .My problem is,When the cursor returns data from database ,Spinner does not set the values of the cursor.

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和PrimaryData code。这个类是一个数据库表的等效

PrimaryData class in which to put PrimaryDataId and PrimaryDataCode. This class is the equivalent of a database table.

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;
    }
}

这code填写微调

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);        
    }
}

这是当数据从数据库返回我的code。

And this is my code when data is returned from the database.

 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();

我的主要问题是,为什么

My main question is why

adapterAdmin.getPosition(PD));

adapterAdmin.getPosition (pd));

返回-1?

推荐答案

按照此code的微调设定值

Follow this code to set value in Spinner

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

  }

}

这篇关于为什么不设置微调了Android的价值。我使用游标?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆