来自服务器

时间:2018-01-28 09:58:55

标签: android fragment

从服务器ID和名称获取响应,

public class UpcomingRaces extends Fragment {
private static final String TAG = "UpcomingRaces";

UserSessionManager session;

Button btn_selectloc;

TextView mItemSelected;

String[] listItems = {};
boolean[] checkedItems;
ArrayList<Integer> mUserItems = new ArrayList<>();
ArrayList<String> arrayList = new ArrayList<String>();

String[] listItems1 = {};
ArrayList<String> arrayList1 = new ArrayList<String>();

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_upcoming_races, container, false);

    session = new UserSessionManager(getActivity());

    btn_selectloc = (Button) rootView.findViewById(R.id.btn_selectloc);

    mItemSelected = (TextView) rootView.findViewById(R.id.tvItemSelected);
    getLocations();

    listItems = arrayList.toArray(new String[Arrays.asList(listItems).size()]);
    checkedItems = new boolean[listItems.length];

    listItems1 = arrayList1.toArray(new String[Arrays.asList(listItems).size()]);

    btn_selectloc.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            AlertDialog.Builder mBuilder = new AlertDialog.Builder(getActivity());
            mBuilder.setTitle(R.string.dialog_title);
            mBuilder.setMultiChoiceItems(listItems, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int position, boolean isChecked) {
                    if(isChecked){
                        mUserItems.add(position);
                    }else{
                        mUserItems.remove((Integer.valueOf(position)));
                    }
                }
            });

            mBuilder.setCancelable(false);
            mBuilder.setPositiveButton(R.string.ok_label, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int which) {
                    String item = "";
                    String item1 = "";
                    for (int i = 0; i < mUserItems.size(); i++) {
                        item = item + listItems[mUserItems.get(i)];
                        if (i != mUserItems.size() - 1) {
                            item = item + ", ";
                        }

                        item1 = item1 + listItems1[mUserItems.get(i)];
                        if (i != mUserItems.size() - 1) {
                            item1 = item1 + ", ";
                        }
                    }
                    mItemSelected.setText(item1);
                }
            });

            AlertDialog mDialog = mBuilder.create();
            mDialog.show();
        }
    });
    return rootView;
}

private void getLocations() {
    StringRequest stringRequest = new StringRequest("https://jsonplaceholder.typicode.com/posts",
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        JSONObject obj = new JSONObject("{"response":1,"message":"locations success","data":[{"id":7,"name":"123 Middle School"},{"id":8,"name":"ABC Jr High"},{"id":3,"name":"Brentwood High school"},{"id":2,"name":"Clinton Elementary"},{"id":5,"name":"Iowa High School"},{"id":1,"name":"Jfk middle school"},{"id":6,"name":"Terryville Elementary "},{"id":4,"name":"West Jr high"}]}");
                        if (obj.getString("response").equals("1")) {
                            //mProgress.dismiss();
                            JSONArray res = new JSONArray(obj.getString("data"));
                            for (int i=0; i<res.length(); i++) {
                                JSONObject result = null;
                                result = res.getJSONObject(i);
                                arrayList.add(result.getString("name"));
                                arrayList1.add(result.getString("id"));
                            }
                        } else {
                            Toast.makeText(getActivity(), obj.getString("message"), Toast.LENGTH_SHORT).show();
                        }

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

                }
            });
    RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
    requestQueue.add(stringRequest);
}

}

我想在setMultiChoiceItems中使用boolean checkedItems显示该名称,并且我想将“id”附加到TextView mItemSelected

此外,我想在会话中存储该已检查的ID。

我尝试过很多方法,无法解决这个问题。请帮助我实现这个目标。

1 个答案:

答案 0 :(得分:0)

<强> EDITED

public class MainActivity extends AppCompatActivity {

LinearLayout notification_bar_linearlayout;

TextView txtOutput;

private String DEBUG_TAG = "MOVEMENT";

ArrayList<String> arrayList;

ArrayList<Integer> mUserItems;

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

    txtOutput = (TextView) findViewById(R.id.output);

    mUserItems = new ArrayList<>();


    StringRequest stringRequest = new StringRequest("your_url_here",
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        arrayList = new ArrayList<>();

                        response = " {\"response\":1,\"message\":\"locations success\",\"data\":[{\"id\":7,\"name\":\"123 Middle School\"},{\"id\":8,\"name\":\"ABC Jr High\"},{\"id\":3,\"name\":\"Brentwood High school\"}]}";
                        JSONObject obj = new JSONObject(response);

                        if (obj.getString("response").equals("1")) {

                            JSONArray res = obj.getJSONArray("data");

                            for (int i=0; i< res.length(); i++) {

                                JSONObject val = res.getJSONObject(i);

                               arrayList.add(val.getString("name"));
                            }

                            LoadAlert();


                        } else {
                            Toast.makeText(getApplicationContext(), obj.getString("message"), Toast.LENGTH_SHORT).show();
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            });
    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);

}

public void LoadAlert()
{
    String[] listItems = arrayList.toArray(new String[arrayList.size()]);
    boolean[] checkedItems = new boolean[listItems.length];

    AlertDialog.Builder mBuilder = new AlertDialog.Builder(this);
    mBuilder.setTitle("SELECT ITEMS");
    mBuilder.setMultiChoiceItems(listItems, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int position, boolean isChecked) {
            if(isChecked){
                  mUserItems.add(position);
            }else{
                  mUserItems.remove((Integer.valueOf(position)));
            }
        }
    });

    mBuilder.setCancelable(false);
    mBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int which) {

            String items = "";

            for (int i = 0;i < mUserItems.size();i++)
            {
                items += "" + mUserItems.get(i) + ", ";
            }

            txtOutput.setText(items);
        }
    });

   mBuilder.show();

}

希望它能起作用。!