首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我要得到一个"mergeCursor“对象而不是一个”字符串“?

为什么我要得到一个"mergeCursor“对象而不是一个”字符串“?
EN

Stack Overflow用户
提问于 2020-02-04 14:48:51
回答 3查看 118关注 0票数 0

当我执行下面的代码时,我希望得到text="All",因为它的可见值就是这个,但是我一直在获取

String text = "android.database.MergeCursor@88a4aaa"

守则:

代码语言:javascript
运行
复制
String[] from = new String[]{"type"};
        int[] to = new int[]{android.R.id.text1};
Cursor cursorTypes = coctelsOpenHelper.getTypes();
        //Add "All" option to the spinner
        MatrixCursor matrixCursor = new MatrixCursor(new String[] { "_id", "type"});
        matrixCursor.addRow(new Object[] { "0", getString(R.string.title_all_drinks) });

        MergeCursor mergeCursor = new MergeCursor(new Cursor[] { matrixCursor, cursorTypes });

        spinnerType = view.findViewById(R.id.spinnerDrinkType);
        adapter = new SimpleCursorAdapter(getContext(), android.R.layout.simple_spinner_item, mergeCursor, from, to,0);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinnerType.setAdapter(adapter);

        spinnerType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
        {
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
            {
               //When I try to debug, the text value is the given above, a MergeCursor
                text = ((String)spinnerType.getSelectedItem().toString());

                selectedItem = position;
                addSelection();
                //This ones don't have anything in common with the adapter from the spinner, are for a RecyclerView
                initializeData();
                initializeAdapter();
            }
            public void onNothingSelected(AdapterView<?> parent)
            {
            }
        });

不,“文本”不再被使用了,所以它的价值没有改变,我也尝试过

代码语言:javascript
运行
复制
spinnerType.getSelectedItem().toString();

但结果是一样的。

我所要做的就是在旋转器上获取文本的字符串值,并将其与R.string.myvaluetext.equals(getString(R.string.myvalue))进行比较。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-02-04 18:54:58

解决方案:问题在于(我需要它将一行添加到游标中),结束时,我不再使用simple cursor adapter作为旋转器,而是使用ArrayAdapter,之前使用"all“文本添加自定义行,最近将光标一行一个接一个地添加到ArrayList中,这样我就不会遇到任何问题。

代码语言:javascript
运行
复制
spinnerType = view.findViewById(R.id.spinnerDrinkType);
    //Get the different types of drinks
    Cursor cursorTypes = coctelsOpenHelper.getTypes();

    //Add "All" field to the spinner, for that "all" field is added first to the ArrayList,
    // and later each item of the cursor
    ArrayList<String> spinnerArray = new ArrayList<>();

    spinnerArray.add(getString(R.string.title_all_drinks));
    for(cursorTypes.moveToFirst(); !cursorTypes.isAfterLast(); cursorTypes.moveToNext()) {
        spinnerArray.add(cursorTypes.getString(1));
    }
    ArrayAdapter<String> adapter = new ArrayAdapter<>(
            getContext(), android.R.layout.simple_spinner_item, spinnerArray);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    spinnerType.setAdapter(adapter);


    spinnerType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
    {
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
        {                
            text = spinnerType.getSelectedItem().toString();

            addSelection();
            initializeData();
            initializeAdapter();
        }
)};
票数 0
EN

Stack Overflow用户

发布于 2020-02-04 15:00:31

你的变量是什么类型的?

票数 1
EN

Stack Overflow用户

发布于 2020-02-04 15:08:11

你能这样试试吗?

代码语言:javascript
运行
复制
class MainActivity : AppCompatActivity() {


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val adapter =
            ArrayAdapter(this, android.R.layout.simple_spinner_item, listOf("1", "2", "3"))

        spinner.adapter = adapter

        spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
            override fun onNothingSelected(parent: AdapterView<*>?) {

            }

            override fun onItemSelected(
                parent: AdapterView<*>?,
                view: View?,
                position: Int,
                id: Long
            ) {
                logDebug(spinner.getItemAtPosition(position))
            }

        }

    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60059876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档