私はPHPの/ mysqlデータベースから取得したものを追加するカスタムArrayListを持っています。今、私がその物を追加すると、arraylistは正しく塗りつぶされますが、別の関数でarraylistを使用しようとすると、空になります。何が問題ですか?別の関数でArraylistが空になる
public class SetTask extends Fragment {
ListView lv_task_chooser;
ArrayList<SetTaskModel> setTaskModelArrayList;
private SetTaskAdapter setTaskAdapter;
ArrayAdapter<String> scAdapter;
String url, category;
RequestQueue queue_fetch;
ConnectivityManager connMgr;
NetworkInfo networkInfo;
Context ctx;
LinearLayout taskLayout;
private String[] array;
private int[] sub_cat_id;
JSONArray jsonArray;
public SetTask() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_set_task, container, false);
ctx = getContext();
lv_task_chooser = (ListView)rootView.findViewById(R.id.lv_task_chooser);
taskLayout = (LinearLayout)rootView.findViewById(R.id.taskLayout);
queue_fetch = Volley.newRequestQueue(ctx);
setTaskModelArrayList = new ArrayList<>();
fetchDB();
Log.i("pointafterfetch", "reached");
Log.i("numberofarrayentries", String.valueOf(setTaskModelArrayList.size()));
for (int i = 0; i < setTaskModelArrayList.size(); i++){
Log.i("arrayentriesfetch", setTaskModelArrayList.get(i).toString());
}
setTaskAdapter = new SetTaskAdapter(setTaskModelArrayList, ctx);
lv_task_chooser.setAdapter(setTaskAdapter);
lv_task_chooser.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
populateSpinner(position);
}
});
return rootView;
}
private void fetchDB(){
url = "http://nmstech.in/coach/categorys.php";
connMgr = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
networkInfo = connMgr.getActiveNetworkInfo();
if (!(networkInfo != null && networkInfo.isConnected())) {
final AlertDialog.Builder builder1 = new AlertDialog.Builder(ctx);
builder1.setTitle(getString(R.string.network_no_t));
builder1.setMessage(getString(R.string.network_no_m));
builder1.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder1.create().show();
}
else{
StringRequest strreq_fetch = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String Response) {
try {
jsonArray = new JSONArray(Response);
for(int i = 0; i < jsonArray.length(); i++){
setTaskModelArrayList.add(new SetTaskModel(jsonArray.getJSONObject(i)
.getString("cat_name")));
Log.i("arraylistentries", setTaskModelArrayList.get(i).getCategory());
Log.i("noentries", String.valueOf(setTaskModelArrayList.size()));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError e) {
e.printStackTrace();
}
});
Log.i("pointnotesfetch", "reached");
queue_fetch.add(strreq_fetch);
}
}
private void populateSpinner(int position){
category = lv_task_chooser.getItemAtPosition(position).toString();
final AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
builder.setTitle("Subtopics");
connMgr = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
networkInfo = connMgr.getActiveNetworkInfo();
try {
for (int i = 0; i < jsonArray.getJSONArray(position).length(); i++){
array[i] = jsonArray.getJSONArray(position).getJSONObject(i).getString("sub_cat_name");
sub_cat_id[i] = jsonArray.getJSONArray(position).getJSONObject(i).getInt("sub_cat_id");
}
}
catch (Exception e){
e.printStackTrace();
}
builder.setItems(array, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
Bundle cat_args = new Bundle();
cat_args.putInt("sub_cat_id", sub_cat_id[which]);
cat_args.putString("sub_cat", array[which]);
Fragment fragment = new Exercise();
FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();
fragment.setArguments(cat_args);
fragmentTransaction.replace(R.id.mainFrame, fragment);
fragmentTransaction.commit();
}
});
builder.show();
}
}
ブロはしないでくださいここにコード全体をコピーして貼り付ける...理解できる最小限で効果的なコードを与えるようにしてください –
*別の関数でarraylistを使用しようとしたとき*とはどういう意味ですか?それはいつどこで使うのですか? –
私はあなたの接続が使用しているコードの後に結果を与えていることがわかります。それを使用するデータの応答を待つだけです。 – Ivan