从微调器填充编辑文本
Populate Edit Text from spinner
我正在编写代码,例如用户选择一种名为 FabricA 的面料,当他选择它时,它需要用 FabricA 价格填充编辑文本。我试图实现它,但我无法在编辑文本中显示价格。我将名称和价格存储在两个不同的数组中。我应该将它存储在同一个数组中吗?
这是我的代码:
try {
ConnectionHelper conStr = new ConnectionHelper();
connect = conStr.connectionclass();
if (connect == null) {
Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
} else {
String query = "select * from cc_fabric";
stmt = connect.prepareStatement(query);
rs = stmt.executeQuery();
ArrayList<String> dataF = new ArrayList<>();
ArrayList<String> dataFP = new ArrayList<>();
while (rs.next()) {
String id = rs.getString("FABRIC_NAME");
String price = rs.getString("FABRIC_UNIT_PRICE");// value of database
dataF.add(id);
dataFP.add(price);
}
ArrayAdapter NoCoreAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, dataF);
Fabric.setAdapter(NoCoreAdapter);
}
} catch (SQLException e) {
e.printStackTrace();
}
Fabric.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
String name = Fabric.getSelectedItem().toString();
String price = Fabric.getSelectedItem().toString();
fabricPrice.setText(price);
Toast.makeText(Calc_140_plain.this, name, Toast.LENGTH_SHORT)
.show();
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
代码没有填充我的编辑文本
这里有一个关于如何设置自定义适配器的例子
val titles = mutableListOf<TitleBean>()
titles.addAll(allTitleTypes)
spinner_title.adapter = ArrayAdapter(this, R.layout.item_spinner, titles)
值将根据覆盖的 toString()
填充
您可以这样读取值:
(spinner_title.selectedItem as TitleBean).id
示例TitleBean
用于上例
data class TitleBean(
var id: String = "",
var titleName: String = ""
) {
@Ignore
override fun toString(): String {
return titleName
}
}
注意:示例使用 kotlin
语言。但是,思路是一样的。
在您的 activity class
中声明 HashMap
实例成员
private HashMap<String,String> hashmap;
然后将您的代码更改为:
try {
ConnectionHelper conStr = new ConnectionHelper();
connect = conStr.connectionclass();
if (connect == null) {
Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
} else {
String query = "select * from cc_fabric";
stmt = connect.prepareStatement(query);
rs = stmt.executeQuery();
ArrayList<String> dataF = new ArrayList<>();
hashMap = new HashMap<>();
while (rs.next()) {
String id = rs.getString("FABRIC_NAME");
String price = rs.getString("FABRIC_UNIT_PRICE");// value of database
hashMap.put(id,price);
dataF.add(id);
}
ArrayAdapter NoCoreAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, dataF);
Fabric.setAdapter(NoCoreAdapter);
}
} catch (SQLException e) {
e.printStackTrace();
}
Fabric.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
String name = Fabric.getSelectedItem().toString();
String price = hashMap.get(name);
fabricPrice.setText(price);
Toast.makeText(Calc_140_plain.this, name, Toast.LENGTH_SHORT)
.show();
}
public void onNothingSelected(AdapterView<?> parent) {
}sss });
我正在编写代码,例如用户选择一种名为 FabricA 的面料,当他选择它时,它需要用 FabricA 价格填充编辑文本。我试图实现它,但我无法在编辑文本中显示价格。我将名称和价格存储在两个不同的数组中。我应该将它存储在同一个数组中吗?
这是我的代码:
try {
ConnectionHelper conStr = new ConnectionHelper();
connect = conStr.connectionclass();
if (connect == null) {
Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
} else {
String query = "select * from cc_fabric";
stmt = connect.prepareStatement(query);
rs = stmt.executeQuery();
ArrayList<String> dataF = new ArrayList<>();
ArrayList<String> dataFP = new ArrayList<>();
while (rs.next()) {
String id = rs.getString("FABRIC_NAME");
String price = rs.getString("FABRIC_UNIT_PRICE");// value of database
dataF.add(id);
dataFP.add(price);
}
ArrayAdapter NoCoreAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, dataF);
Fabric.setAdapter(NoCoreAdapter);
}
} catch (SQLException e) {
e.printStackTrace();
}
Fabric.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
String name = Fabric.getSelectedItem().toString();
String price = Fabric.getSelectedItem().toString();
fabricPrice.setText(price);
Toast.makeText(Calc_140_plain.this, name, Toast.LENGTH_SHORT)
.show();
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
代码没有填充我的编辑文本
这里有一个关于如何设置自定义适配器的例子
val titles = mutableListOf<TitleBean>()
titles.addAll(allTitleTypes)
spinner_title.adapter = ArrayAdapter(this, R.layout.item_spinner, titles)
值将根据覆盖的 toString()
您可以这样读取值:
(spinner_title.selectedItem as TitleBean).id
示例TitleBean
用于上例
data class TitleBean(
var id: String = "",
var titleName: String = ""
) {
@Ignore
override fun toString(): String {
return titleName
}
}
注意:示例使用 kotlin
语言。但是,思路是一样的。
在您的 activity class
中声明HashMap
实例成员
private HashMap<String,String> hashmap;
然后将您的代码更改为:
try {
ConnectionHelper conStr = new ConnectionHelper();
connect = conStr.connectionclass();
if (connect == null) {
Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
} else {
String query = "select * from cc_fabric";
stmt = connect.prepareStatement(query);
rs = stmt.executeQuery();
ArrayList<String> dataF = new ArrayList<>();
hashMap = new HashMap<>();
while (rs.next()) {
String id = rs.getString("FABRIC_NAME");
String price = rs.getString("FABRIC_UNIT_PRICE");// value of database
hashMap.put(id,price);
dataF.add(id);
}
ArrayAdapter NoCoreAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, dataF);
Fabric.setAdapter(NoCoreAdapter);
}
} catch (SQLException e) {
e.printStackTrace();
}
Fabric.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
String name = Fabric.getSelectedItem().toString();
String price = hashMap.get(name);
fabricPrice.setText(price);
Toast.makeText(Calc_140_plain.this, name, Toast.LENGTH_SHORT)
.show();
}
public void onNothingSelected(AdapterView<?> parent) {
}sss });