java - 将 onCreate 方法中的值解析到公共(public)类

标签 java android json

我已在公共(public)类中声明了字符串 st1、st2、st3..st7。我在 protected onCreate 方法中使用 JSON 从 MySQL 数据库获取值(value)。现在我想将它传递给字符串 st1,st2,st3..st7,这样我就可以将它传递给公共(public)类中声明的字符串座位。因此,我可以在下面的 onCreate 方法中使用它以供进一步使用。

public class SeatBookingTwo extends AppCompatActivity implements View.OnClickListener {
ViewGroup layout;

private Context mContext;
private Activity mActivity;

private String mJSONURLString = "http://paolosfa......";

String st1 ="", st2="" , st3=""   ,st4=""  ,st5="" , st6=""  ,st7="" ;

String seats = st1 + "" + st2 + "" + st3 +"" + '/' + "" + st4 + "" + st5 + "" + st6 + "" + st7;

List<TextView> seatViewList = new ArrayList<>();

int seatSize = 100;
int seatGaping = 10;

int STATUS_AVAILABLE = 1;
int STATUS_BOOKED = 2;
int STATUS_RESERVED = 3;
String selectedIds = "";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_seat_booking_two);

    layout = findViewById(R.id.layoutSeat);
    seats = "/" + seats;

    mContext = getApplicationContext();
    mActivity = SeatBookingTwo.this;

    RequestQueue requestQueue = Volley.newRequestQueue(mContext);

    // Initialize a new JsonArrayRequest instance
    JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(
            Request.Method.POST,
            mJSONURLString,
            null,
            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray seat) {
                    // Do something with response
                    //mTextView.setText(response.toString());

                    // Process the JSON
                    try{
                        // Loop through the array elements
                        for(int i=0;i<seat.length();i++){
                            // Get current json object
                            JSONObject student = seat.getJSONObject(i);

                            // Get the current student (json object) data
                             st1 = student.getString("st1");
                             st2 = student.getString("st2");
                             st3 = student.getString("st3");
                             st4 = student.getString("st4");

                             st5 = student.getString("st5");
                             st6 = student.getString("st6");
                             st7 = student.getString("st7");

                        }
                    }catch (JSONException e){
                        e.printStackTrace();
                    }
                }
            },
            new Response.ErrorListener(){
                @Override
                public void onErrorResponse(VolleyError error){

                }
            }
    );

    // Add JsonArrayRequest to the RequestQueue
    requestQueue.add(jsonArrayRequest);

    LinearLayout layoutSeat = new LinearLayout(this);
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    layoutSeat.setOrientation(LinearLayout.VERTICAL);
    layoutSeat.setLayoutParams(params);
    layoutSeat.setPadding(8 * seatGaping, 8 * seatGaping, 8 * seatGaping, 8 * seatGaping);
    layout.addView(layoutSeat);

    LinearLayout layout = null;

    int count = 0;

    for (int index = 0; index < seats.length(); index++) {
        if (seats.charAt(index) == '/') {
            layout = new LinearLayout(this);
            layout.setOrientation(LinearLayout.HORIZONTAL);
            layoutSeat.addView(layout);
        } else if (seats.charAt(index) == '1') {
            count++;
            TextView view = new TextView(this);
            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(seatSize, seatSize);
            layoutParams.setMargins(seatGaping, seatGaping, seatGaping, seatGaping);
            view.setLayoutParams(layoutParams);
            view.setPadding(0, 0, 0, 2 * seatGaping);
            view.setId(count);
            view.setGravity(Gravity.CENTER);
            view.setBackgroundResource(R.drawable.ic_seats_booked);
            view.setTextColor(Color.WHITE);
            view.setTag(STATUS_BOOKED);
            view.setText(count + "");
            view.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 9);
            layout.addView(view);
            seatViewList.add(view);
            view.setOnClickListener(this);
        } else if (seats.charAt(index) == '2') {
            count++;
            TextView view = new TextView(this);
            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(seatSize, seatSize);
            layoutParams.setMargins(seatGaping, seatGaping, seatGaping, seatGaping);
            view.setLayoutParams(layoutParams);
            view.setPadding(0, 0, 0, 2 * seatGaping);
            view.setId(count);
            view.setGravity(Gravity.CENTER);
            view.setBackgroundResource(R.drawable.ic_seats_book);
            view.setText(count + "");
            view.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 9);
            view.setTextColor(Color.BLACK);
            view.setTag(STATUS_AVAILABLE);
            layout.addView(view);
            seatViewList.add(view);
            view.setOnClickListener(this);
        } else if (seats.charAt(index) == '3') {
            count++;
            TextView view = new TextView(this);
            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(seatSize, seatSize);
            layoutParams.setMargins(seatGaping, seatGaping, seatGaping, seatGaping);
            view.setLayoutParams(layoutParams);
            view.setPadding(0, 0, 0, 2 * seatGaping);
            view.setId(count);
            view.setGravity(Gravity.CENTER);
            view.setBackgroundResource(R.drawable.ic_seats_reserved);
            view.setText(count + "");
            view.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 9);
            view.setTextColor(Color.WHITE);
            view.setTag(STATUS_RESERVED);
            layout.addView(view);
            seatViewList.add(view);
            view.setOnClickListener(this);
        } else if (seats.charAt(index) == '_') {
            TextView view = new TextView(this);
            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(seatSize, seatSize);
            layoutParams.setMargins(seatGaping, seatGaping, seatGaping, seatGaping);
            view.setLayoutParams(layoutParams);
            view.setBackgroundColor(Color.TRANSPARENT);
            view.setText("");
            layout.addView(view);
        }
    }
}

@Override
public void onClick(View view) {
    if ((int) view.getTag() == STATUS_AVAILABLE) {
        if (selectedIds.contains(view.getId() + ",")) {
            selectedIds = selectedIds.replace(+view.getId() + ",", "");
            view.setBackgroundResource(R.drawable.ic_seats_book);
        } else {
            selectedIds = selectedIds + view.getId() + ",";
            view.setBackgroundResource(R.drawable.ic_seats_selected);
        }
    } else if ((int) view.getTag() == STATUS_BOOKED) {
        Toast.makeText(this, "Seat " + view.getId() + " is Booked", Toast.LENGTH_SHORT).show();
    } else if ((int) view.getTag() == STATUS_RESERVED) {
        Toast.makeText(this, "Seat " + view.getId() + " is Reserved", Toast.LENGTH_SHORT).show();
    }
}
}

最佳答案

我的建议是不要创建String席位 = st1 + ""+ st2 + ""+ st3 +""+ '/' + ""+ st4 + ""+ st5 + ""+ st6 + ""+ st7; 只需声明

String seats = "";

然后在 onResponse 中执行seats = st1 + ""+ st2 + ""+ st3 +""+ '/' + ""+ st4 + ""+ st5 + ""+ st6 + ""+ st7 ;

我会完成上述操作并在任何需要的地方使用,并且记住字符串是不可变的

关于java - 将 onCreate 方法中的值解析到公共(public)类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57809892/

相关文章:

android - custonlistadapter 的空指针异常?

json - Ionic 读取本地 JSON 文件

java - Spring MVC : HTTP Status 404 -/SimpleMVC/WEB_INF/HelloPage. jsp

java - 卡在 javafx 程序上,该程序不会将可注入(inject)字段加载到 FXML 文档中

java - Guava RateLimiter 预热说明

java - 显示对话框后 EditText 自动滚动不起作用

Java 客户端 API - 在一次调用中获取所有容器?

android - 想要在 Android 中使用 ZBar 扫描仪库进行更大的相机预览

Python - 从嵌套 json 中提取数据时出现问题

java - JodaTime 日期的序列化和反序列化为 json