gpt4 book ai didi

android - 如果 Spinner 或 EditText 更改,则更改 TextView

转载 作者:太空狗 更新时间:2023-10-29 14:55:39 29 4
gpt4 key购买 nike

我是 android 开发的初学者。我有一个 TextViewSpinnerEditTextTextView 将根据 SpinnerEditText 进行更改,我知道该怎么做。我的问题是如何让 SpinnerEditText 一起工作,所以当我从 Spinner 中选择一个项目时,它会检查我有什么在 EditText 中打印到 TextView 之前,它必须与 EditText 相同。

EditText 代码。

mEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (!mEditText.getText().toString().trim().isEmpty()) {
value = Double.parseDouble(mEditText.getText().toString());

mTextView.setText(value + "");
}
}

@Override
public void afterTextChanged(Editable s) {

}
});

旋转器代码:

mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (mMapUnit.containsKey(lengthKey[position])) {
if (!mEditText.getText().toString().trim().isEmpty()) {
value = Double.parseDouble(mEditText.getText().toString());

// calculate

mTextView.setText(result + "");
}
}
}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}
});

最佳答案

您可以使用此方法将编辑文本和所选项目的文本放入TextView

mEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (!mEditText.getText().toString().trim().isEmpty()) {
value = Double.parseDouble(mEditText.getText().toString());

mTextView.setText(value + "" + mSpinner.getAdapter().getItem(mSpinner.getSelectedItemPosition()).toString());
}
}

@Override
public void afterTextChanged(Editable s) {

}
});

mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (mMapUnit.containsKey(lengthKey[position])) {
if (!mEditText.getText().toString().trim().isEmpty()) {
value = Double.parseDouble(mEditText.getText().toString());

// calculate

mTextView.setText(value + "" + mSpinner.getAdapter().getItem(position).toString());
}
}
}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}
});

上面代码的一点解释:

我想你知道适配器是什么,不过我还是要解释一下;适配器是一个对象,它包含需要在 View (在本例中为 Spinner)中显示的信息。

该适配器附加到 Spinner View ,并通过调用方法mSpinner .getAdapter()

您将获得连接到 Spinner 的适配器实例。因为 Spinner 与适配器大量协同工作,所以 Spinner 中的项目位置将与适配器中的位置相同。

因此您可以调用 mSpinner.getAdapter().getItem(position); 获取位置 position 上的项目。

然后您应该看到适配器对 ListTypes 使用了什么。如果它是一个字符串,你可以这样做

String itemText = ((String) mSpinner.getAdapter().getItem(position) ) ;

当 onTextChanged 回调被调用时,EditText 的文本改变(或被改变)并且它不考虑 Spinner。所以你得不到 Spinner 的参数(比如当前位置或 id)。因此,您需要按照上面的说明手动获取它。

调用 OnItemSelected 回调时,Spinner 发生了变化,您现在可能已经猜到了,这次我们确实有我已经谈到的那些参数。因此您不需要获取所选项目(这很危险,因为 Spinner 仍然可以处理更改,并且 Spinner 的 selectedItem 可能与回调提供的位置不同)

所以必须使用回调的position参数。

由于找不到“result”变量,我假设您指的是 OnItemSelectedListener 中的“value”变量。

祝你好运!

关于android - 如果 Spinner 或 EditText 更改,则更改 TextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31771542/

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