当我执行下面的代码时,我希望得到text="All",因为它的可见值就是这个,但是我一直在获取
String text = "android.database.MergeCursor@88a4aaa"
守则:
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)
{
}
});不,“文本”不再被使用了,所以它的价值没有改变,我也尝试过
spinnerType.getSelectedItem().toString();但结果是一样的。
我所要做的就是在旋转器上获取文本的字符串值,并将其与R.string.myvalue和text.equals(getString(R.string.myvalue))进行比较。
发布于 2020-02-04 18:54:58
解决方案:问题在于(我需要它将一行添加到游标中),结束时,我不再使用simple cursor adapter作为旋转器,而是使用ArrayAdapter,之前使用"all“文本添加自定义行,最近将光标一行一个接一个地添加到ArrayList中,这样我就不会遇到任何问题。
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();
}
)};发布于 2020-02-04 15:00:31
你的变量是什么类型的?
发布于 2020-02-04 15:08:11
你能这样试试吗?
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))
}
}
}
}https://stackoverflow.com/questions/60059876
复制相似问题