Android 选择Spinner(其数据库为MySQL)时如何将数据提取到TextView中
我正在尝试使用Android Eclipse制作一个项目,我对这一点还不熟悉 我的问题是: 我有一个表,它的列是id、service\u name、price和detail。我已经知道如何从Spinner获取数据 我想问一下,在选择微调器时,如何查询数据并将其显示到文本视图中,文本视图是txtPrice和txtdail 这是我从androidhive.info获得的代码,谢谢Android 选择Spinner(其数据库为MySQL)时如何将数据提取到TextView中,android,mysql,textview,spinner,Android,Mysql,Textview,Spinner,我正在尝试使用Android Eclipse制作一个项目,我对这一点还不熟悉 我的问题是: 我有一个表,它的列是id、service\u name、price和detail。我已经知道如何从Spinner获取数据 我想问一下,在选择微调器时,如何查询数据并将其显示到文本视图中,文本视图是txtPrice和txtdail 这是我从androidhive.info获得的代码,谢谢 public class TransactionActivity extends Activity implements
public class TransactionActivity extends Activity implements OnItemSelectedListener {
private Button btnAddNewService;
//private TextView txtService;
private Spinner spinnerService;
// array list for spinner adapter
private ArrayList<ServiceList> servicesList;
ProgressDialog pDialog;
// API urls
// Url to create new category
private String URL_NEW_CATEGORY = "http://localhost/food_api/new_category.php";
// Url to get all categories
private String URL_CATEGORIES = "http://localhost/FlawlessAdmin/storescripts/create_transaction/get_service.php";
////////////////////////////////
private EditText editTextService;
List<String> listService=new ArrayList<String>();
////////////////////////////////
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_transaction);
btnAddNewService = (Button) findViewById(R.id.btnTransact);
spinnerService = (Spinner) findViewById(R.id.spinService);
editTextService = (EditText) findViewById(R.id.txtService);
servicesList = new ArrayList<ServiceList>();
// spinner item select listener
spinnerService.setOnItemSelectedListener(this);
editTextService=(EditText) findViewById(R.id.txtService);
// Add new Service click event
btnAddNewService.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (editTextService.getText().toString().trim().length() > 0) {
// new category name
String newService = editTextService.getText().toString();
// Call Async task to create new category
new AddNewService().execute(newService);
} else {
Toast.makeText(getApplicationContext(),
"Please enter service name", Toast.LENGTH_SHORT)
.show();
}
}
});
new GetCategories().execute();
}
/**
* Adding spinner data
* */
private void populateSpinner() {
List<String> lables = new ArrayList<String>();
editTextService.setText("");
for (int i = 0; i < servicesList.size(); i++) {
lables.add(servicesList.get(i).getName());
}
// Creating adapter for spinner
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, lables);
// Drop down layout style - list view with radio button
spinnerAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spinnerService.setAdapter(spinnerAdapter);
//////////////Copying from spinner to EditText
listService.addAll(lables);
}
/**
* Async task to get all food categories
* */
private class GetCategories extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(TransactionActivity.this);
pDialog.setMessage("Fetching service categories..");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected Void doInBackground(Void... arg0) {
ServiceHandler jsonParser = new ServiceHandler();
String json = jsonParser.makeServiceCall(URL_CATEGORIES, ServiceHandler.GET);
Log.e("Response: ", "> " + json);
if (json != null) {
try {
JSONObject jsonObj = new JSONObject(json);
if (jsonObj != null) {
JSONArray categories = jsonObj
.getJSONArray("services");
for (int i = 0; i < categories.length(); i++) {
JSONObject catObj = (JSONObject) categories.get(i);
ServiceList cat = new ServiceList(catObj.getInt("id"),
catObj.getString("service_name"));
servicesList.add(cat);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
} else {
Log.e("JSON Data", "Didn't receive any data from server!");
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
if (pDialog.isShowing())
pDialog.dismiss();
populateSpinner();
}
}
/**
* Async task to create a new food category
* */
private class AddNewService extends AsyncTask<String, Void, Void> {
boolean isNewCategoryCreated = false;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(TransactionActivity.this);
pDialog.setMessage("Creating new services..");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected Void doInBackground(String... arg) {
String newCategory = arg[0];
// Preparing post params
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("name", newCategory));
ServiceHandler serviceClient = new ServiceHandler();
String json = serviceClient.makeServiceCall(URL_NEW_CATEGORY,
ServiceHandler.POST, params);
Log.d("Create Response: ", "> " + json);
if (json != null) {
try {
JSONObject jsonObj = new JSONObject(json);
boolean error = jsonObj.getBoolean("error");
// checking for error node in json
if (!error) {
// new category created successfully
isNewCategoryCreated = true;
} else {
Log.e("Create Category Error: ", "> " + jsonObj.getString("message"));
}
} catch (JSONException e) {
e.printStackTrace();
}
} else {
Log.e("JSON Data", "Didn't receive any data from server!");
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
if (pDialog.isShowing())
pDialog.dismiss();
if (isNewCategoryCreated) {
runOnUiThread(new Runnable() {
@Override
public void run() {
// fetching all categories
new GetCategories().execute();
}
});
}
}
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id) {
/////////////////////////////////////
String strAge=listService.get(position).toString();
editTextService.setText(strAge);
/////////////////////////////////////
Toast.makeText(
getApplicationContext(),
parent.getItemAtPosition(position).toString() + " Selected" ,
Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}}
}如果希望ServiceList类包含price和detail属性,则需要将它们添加到现有类中,并为属性创建setter和getter。为了方便起见,您还可以创建另一个构造函数。我假设price属性是一个字符串
将GetCategories异步任务类的doInBackground方法中的ServiceList构造函数修改为新创建的ServiceList构造函数
@Override
protected Void doInBackground(Void... arg0) {
ServiceHandler jsonParser = new ServiceHandler();
String json = jsonParser.makeServiceCall(URL_CATEGORIES, ServiceHandler.GET);
Log.e("Response: ", "> " + json);
if (json != null) {
try {
JSONObject jsonObj = new JSONObject(json);
if (jsonObj != null) {
JSONArray categories = jsonObj
.getJSONArray("services");
for (int i = 0; i < categories.length(); i++) {
JSONObject catObj = (JSONObject) categories.get(i);
int id = catObj.getInt("id");
String serviceName = catObj.getString("service_name");
String detail = catObj.getString("detail");
String price = catObj.getString("price");
ServiceList cat = new ServiceList(id, serviceName, price, detail);
servicesList.add(cat);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
} else {
Log.e("JSON Data", "Didn't receive any data from server!");
}
return null;
}
在选定的方法中,根据需要设置价格和详细信息的文本
我的建议是,你应该考虑正确地学习java和Android。我推荐Udacity上的课程和课程。你可以选择免费的,这样你就不用付钱了
我希望这能有所帮助。将数据查询到我的文本视图是什么意思?我的意思是查询并显示到我的文本视图中。谢谢你到底有什么问题?我看不出你在提供的代码中哪里提到了价格或细节。是的,我知道我给出的代码没有价格和细节的参考。我的表的列是id、服务名称、价格和详细信息。我想为我的活动设置一个微调器,用于显示服务名称,而TextView用于显示价格和详细信息。现在,我的问题是,当我选择服务名称时,TextView应该显示等价价格和详细信息。谢谢。当您选择服务名称时,当前的行为是什么?非常感谢。这对我很有帮助。
public class ServiceList {
private int id;
private String name;
private String price;
private String detail;
public ServiceList(){}
public ServiceList(int id, String name){
this.id = id;
this.name = name;
}
public ServiceList(int id, String name, String price, String detail){
this.id = id;
this.name = name;
this.price = price;
this.detail = detail;
}
public void setId(int id){
this.id = id;
}
public void setName(String name){
this.name = name;
}
public void setPrice(String price){
this.price = price;
}
public void setDetail(String detail){
this.detail = detail;
}
public int getId(){
return this.id;
}
public String getName(){
return this.name;
}
public String getPrice(){
return this.price;
}
public String getDetail(){
return this.detail;
}
}
@Override
protected Void doInBackground(Void... arg0) {
ServiceHandler jsonParser = new ServiceHandler();
String json = jsonParser.makeServiceCall(URL_CATEGORIES, ServiceHandler.GET);
Log.e("Response: ", "> " + json);
if (json != null) {
try {
JSONObject jsonObj = new JSONObject(json);
if (jsonObj != null) {
JSONArray categories = jsonObj
.getJSONArray("services");
for (int i = 0; i < categories.length(); i++) {
JSONObject catObj = (JSONObject) categories.get(i);
int id = catObj.getInt("id");
String serviceName = catObj.getString("service_name");
String detail = catObj.getString("detail");
String price = catObj.getString("price");
ServiceList cat = new ServiceList(id, serviceName, price, detail);
servicesList.add(cat);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
} else {
Log.e("JSON Data", "Didn't receive any data from server!");
}
return null;
}