java - Android / MySQL:使用初始设置文本“请选择”从数据库填充微调器
问题描述
我想问一下我的代码。我成功创建了一个列出数据库中数据的微调器。
在我的例子中,这个微调器将从表“工厂”的“fac_name”列中填充数据。现在,在微调器的初始列表中,我想显示一个文本“请选择”,文本下方将显示来自数据库的填充数据。下面是我的代码。
爪哇
public static final String TAG_FAC_NAME = "fac_name";
public static final String JSON_ARRAY = "result";
private JSONArray result;
private ArrayList<String> factoryList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_task);
factoryList = new ArrayList<>();
spFactory = findViewById(R.id.spFactory);
spFactory.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
getData();
}
private void getData(){
StringRequest stringRequest = new StringRequest(URLs.URL_SPINNER_FACTORY,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
JSONObject j = null;
try {
j = new JSONObject(response);
result = j.getJSONArray(JSON_ARRAY);
getFactory(result);
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
private void getFactory(JSONArray j){
for(int i=0;i<j.length();i++){
try {
JSONObject json = j.getJSONObject(i);
factoryList.add(json.getString(TAG_FAC_NAME));
} catch (JSONException e) {
e.printStackTrace();
}
}
spFactory.setAdapter(new ArrayAdapter<String>(AddTask.this, android.R.layout.simple_spinner_dropdown_item, factoryList));
}
URL_SPINNER_FACTORY (spinner_factory.php)
<?php
require_once "../config/configPDO.php";
$query = $conn->prepare("SELECT * FROM ot_factory ORDER BY fac_id ASC");
$query->execute();
$factoryList = array();
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
array_push($factoryList,array(
'fac_name'=>$row['fac_name'],
)
);
}
echo json_encode(array('result'=>$factoryList));
?>
有人可以帮我吗?谢谢..
解决方案
您可以使用 XML 代码来完成。喜欢
`<Spinner
android:id="@+id/R.id.spFactory"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="15dp"
android:layout_marginBottom="15dp"
android:prompt="Please Select" />`
推荐阅读
- c++ - 如何使用 range-v3 获得集合的所有权?
- angular - ionic , angular - index.html 中的全局变量,由其他 ts 页面调用
- python - 空闲和蟒蛇
- jenkins - GIT_SSH 在我的一个 Windows 从属服务器上不起作用
- matlab - 是否可以在 Matlab 中分离 imcontour 给出的不同级别的轮廓?
- c# - 限制 MVC 方法的下载次数
- css - 使用标签移动导航栏品牌文本
- c# - 带插值的计算器
- sql - Microsoft SQL Server 2014 - 告诉我下面的 SQL 语句到底出了什么问题
- java - HDFView 2.4 使便携