Android 选择Spinner(其数据库为MySQL)时如何将数据提取到TextView中

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

我正在尝试使用Android Eclipse制作一个项目,我对这一点还不熟悉

我的问题是:

我有一个表,它的列是id、service\u name、price和detail。我已经知道如何从Spinner获取数据

我想问一下,在选择微调器时,如何查询数据并将其显示到文本视图中,文本视图是txtPrice和txtdail

这是我从androidhive.info获得的代码,谢谢

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;
}