【问题标题】:How to get String value of an object instead of object values?如何获取对象的字符串值而不是对象值?
【发布时间】:2015-10-27 02:33:03
【问题描述】:

我想从sqlite 数据库中填充spinner。在我检索相关数据后,它显示垃圾值。你能帮我解决这个问题吗?我将在此处附上我的代码。

--java 文件--

public class AddNewMovieActivity extends AppCompatActivity {
    private Spinner movieTypes;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.add_new_movie);
        movieTypes = (Spinner) findViewById(R.id.spinMovieType);

        loadSpinnerData();

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_add_new_movie, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    private void loadSpinnerData() {
        // database handler
        DBHelper db = new DBHelper(this);

        // Spinner Drop down elements


        List<MovieType> lables = db.getAllMovieTypes();


        // Creating adapter for spinner
        ArrayAdapter<MovieType> dataAdapter = new ArrayAdapter<MovieType>(this,android.R.layout.simple_spinner_item,lables);

        // Drop down layout style - list view with radio button
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);


        // attaching data adapter to spinner
        movieTypes.setAdapter(dataAdapter);
    }
}

-- DBHelper--

 public List<MovieType> getAllMovieTypes() {
        SQLiteDatabase db = getReadableDatabase();
        List<MovieType> lst = new ArrayList<MovieType>();
        Cursor cursor = db.query(TABLE_MOVIE_TYPE, null, COLUMN_STATUS + "=?", new String[]{"A"}, null, null, null);
        if (cursor != null) {
            cursor.moveToFirst();
            while (!cursor.isAfterLast()){
                String type = cursor.getString(1).toString();
                MovieType movieType = new MovieType(type);
                movieType.setTypeId(cursor.getInt(0));
                lst.add(movieType);
            cursor.moveToNext();
            }
        }
        db.close();
        return lst;

    }

我只想显示数据库中的电影类型。请帮我。此代码返回对象值。但我需要它的字符串值。我试图将我的对象转换为字符串。但我找不到合适的方法来解决它。其实我对Android很陌生。所以请帮助我。

【问题讨论】:

  • @saku..welcome to SO..please 添加相关代码来指定您的确切问题,而不是完整的 java 代码。
  • 通过扩展ArrayAdapter类创建自定义适配器
  • 现在你会赞成你的问题

标签: android sqlite spinner


【解决方案1】:

您可以做的是在您的 MovieType 类中覆盖 toString() 方法

    public class MovieType{

    //Whatever fields you have here

     //Override toString()
     @Override
        public String toString() {
            return your_field_name;  

            /***put the field name which you want to show in spinner
                            Or 
                You can append multiple fileds
                return field1 + field2+......;
           ***/
        }
    }

一切就绪,然后您将在 spinner 中看到该字段的值,即您在 toString() 方法中设置的值。

【讨论】:

  • 如果它对你有帮助,也对我有帮助,请接受并投票。
  • 我不能投票,因为我没有 15 名声望。我接受了它作为答案。谢谢
  • 非常感谢千里眼。
【解决方案2】:

您可以制作自定义适配器,也可以制作字符串类型列表。 正如您所提到的,您只想显示电影类型。您可以在 getAllMovieTypes() 函数中执行此操作。

public List<String> getAllMovieTypes() {
    SQLiteDatabase db = getReadableDatabase();
    List<String> lst = new ArrayList<String>();
    Cursor cursor = db.query(TABLE_MOVIE_TYPE, null, COLUMN_STATUS + "=?", new String[]{"A"}, null, null, null);
    if (cursor != null) {
        cursor.moveToFirst();
        while (!cursor.isAfterLast()){
            String type = cursor.getString(1).toString();
            lst.add(type);
        cursor.moveToNext();
        }
    }
    db.close();
    return lst;

}

现在,您只能显示类型。

【讨论】:

  • 好主意,但我们可以在 MovieType 类中做到这一点,而无需更改代码。
  • hhmm 我来自乌代浦尔,看到您来自德里的个人资料。您是 Android 新手吗?
猜你喜欢
  • 2023-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-05
  • 2019-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多