gpt4 book ai didi

Android - 微调器的文本下拉列表/选择不显示

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:40:12 25 4
gpt4 key购买 nike

我正在使用此示例代码来填充 Spinner。数据从数据库中读取。选择正确显示 - 在本例中,它显示“绿色”和“红色”。

    Spinner spinnerColor = (Spinner) findViewById(R.id.spinnertProfile);

mProfileDbHelper = new ProfileDbAdapter(this);
mProfileDbHelper.open();

Cursor profilesCursor = mProfileDbHelper.fetchAllProfiles();
startManagingCursor(profilesCursor);

// Create an array to specify the fields we want to display in the list
String[] from = new String[] { ProfileDbAdapter.COL_PROFILE_TITLE };

// and an array of the fields we want to bind those fields to
int[] to = new int[] { R.id.textviewColors };

// Now create a simple cursor adapter and set it to display
SimpleCursorAdapter profilesAdapter = new SimpleCursorAdapter(this,
R.layout.profile_color, profilesCursor, from,
to);

spinnerColor.setAdapter(profilesAdapter);

}

但是,当我更改为使用不同的布局时 android.R.layout.simple_spinner_dropdown_item。 Spinner 文本消失了。

    // Now create a simple cursor adapter and set it to display
SimpleCursorAdapter profilesAdapter = new SimpleCursorAdapter(this,
R.layout.profile_color, profilesCursor, from,
to);

profilesAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spinnerColor.setAdapter(profilesAdapter);

查看下面没有和有 simple_spinner_dropdown_item 的快照: enter image description here

有什么我可能会错过的吗?

最佳答案

好的,实际情况是,当您调用 setDropDownViewResource 时,您正在替换之前在构造函数中指定的布局。在你的情况下 R.layout.profile_colorSimpleCursorAdapter 扩展 ResourceCursorAdapter并在构造函数中将两个布局设置为彼此相等。

public ResourceCursorAdapter(Context context, int layout, 
Cursor c, boolean autoRequery) {

super(context, c, autoRequery);
mLayout = mDropDownLayout = layout;
mInflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

当您调用 setDropDownViewResource 并更改下拉布局时会出现此问题。 SimpleCursorAdapter 将继续使用您在构造函数中指定的相同资源 ID 绑定(bind)。

您应该做的只是在 SimpleCursorAdapter 的构造函数中指定布局。我建议将您的代码更改为如下所示:

String[] from = new String[] { ProfileDbAdapter.COL_PROFILE_TITLE };
int[] to = new int[] { android.R.id.text1 }; // from simple_spinner_dropdown_item

SimpleCursorAdapter profilesAdapter = new SimpleCursorAdapter(this,
android.R.layout.simple_spinner_dropdown_item, profilesCursor, from, to);

spinnerColor.setAdapter(profilesAdapter);

为了得到你想要的结果。

基本上不使用setDropDownViewResource 方法。或者,如果您这样做,并且更改了资源 ID 绑定(bind),则必须调用 SimpleCursorAdapter#changeCursorAndColumns;但是,对于您要实现的简单结果而言,这可能有点矫枉过正。

关于Android - 微调器的文本下拉列表/选择不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3073447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com