我正在开发食堂自动化系统的Android应用程序。我想显示用户放置的所有订单以及我已存储在订单表中的订单。现在的问题是我不知道如何从MySQL检索数据并在列表视图中显示该特定用户订单历史数据。
这是我的最后一年项目。
import android.app.ProgressDialog;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class OrderScreen extends AppCompatActivity implements View.OnClickListener {
private EditText editTextId;
private Button buttonGet;
private TextView textViewResult;
private ProgressDialog loading;
String result = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_order_screen);
SharedPreferences sp = getSharedPreferences("login", 0);
String user_id = sp.getString("userid", null);
editTextId = (EditText) findViewById(R.id.editTextId);
editTextId.setText(user_id);
buttonGet = (Button) findViewById(R.id.buttonGet);
buttonGet.setOnClickListener(this);
}
List<Map<String, String>> countryList = new ArrayList<Map<String, String>>();
private void getData() {
String id = editTextId.getText().toString().trim();
if (id.equals("")) {
Toast.makeText(this, "Please enter an id", Toast.LENGTH_LONG).show();
return;
}
loading = ProgressDialog.show(this, "Please wait...", "Fetching...", false, false);
String url = Config.DATA_URL + editTextId.getText().toString().trim();
StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
loading.dismiss();
showJSON(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(OrderScreen.this, error.getMessage().toString(), Toast.LENGTH_LONG).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
private void showJSON(String response) {
String name = "";
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray result = jsonObject.getJSONArray(Config.JSON_ARRAY);
for(int i=0; i<result.length(); i++) {
JSONObject collegeData = result.getJSONObject(i);
String[] values = new String[]{collegeData.getString(Config.KEY_NAME)};
// address = collegeData.getString(Config.KEY_ADDRESS);
// vc = collegeData.getString(Config.KEY_VC);
ListView listView = (ListView) findViewById(R.id.listview);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, values);
listView.setAdapter(adapter);
}
}
catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onClick(View v) {
getData();
}
}
答案 0 :(得分:1)
您需要在PHP中编写后端API。请考虑以下事项:
如果您想阅读用户下达的订单,则可以使用以下格式:
GET /orders?user=<user>&password=<password>
如果您将凭据放在这样的查询字符串中,使用HTTPS很重要,不过我认为研究项目并不重要。
然后,您的API应该针对数据库运行一段SQL来读取订单,例如:
SELECT * FROM order
INNER JOIN food_item_order ON (order.id = food_item_order.order_id)
INNER JOIN food_item ON (food_item_order.food_item_id = food_item.id)
WHERE order.user_id = ?
我在这里隐含了一个四表数据库,上面的三个项目形成了多对多的关系。