Массив не заполняется. Представление списка также не заполняется. Размер массива более одного, но только одно значение печати - PullRequest
0 голосов
/ 10 апреля 2019

Получив ответ json от метода GET, я поместил его в массив, но после того, как показано только одно значение, но он говорит, что размер больше единицы.Listview тоже не заполняется.Пользовательские адаптеры также использовались и раньше, но теперь они не работают.

Это полный файл, который в настоящее время не работает.Результат, который я ожидаю, это: представление списка, которое будет заполнено holderArray.getF2FName().Он не работает даже после перестройки проекта.

Код начинается здесь:

public class rSearchActivity extends AppCompatActivity {

ArrayList<String> itemList = new ArrayList<String>();
ListView listView;
RequestQueue rQueue;
ArrayList<F2FHolder> holderArray = new ArrayList<F2FHolder>();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_r_search);
    listView = (ListView)findViewById(R.id.rSearchList);
    itemList = (ArrayList<String>) getIntent().getSerializableExtra("passingArray");

    for(int i=0;i<itemList.size();i++){
        System.out.println(itemList.get(i));
    }

    rQueue = VolleySingleton.getInstance(this).getmRequestQueue();

    parse(new CallBack() {
        @Override
        public void onSuccess(ArrayList<F2FHolder> holderArray) {
            if(holderArray.size()>0){
                f2fAdapter adapter = new f2fAdapter();
                listView.setAdapter(adapter);
            }else{
                Toast.makeText(rSearchActivity.this,"No recipes available containing these ingredients, try different\n" +
                        "ingredients",Toast.LENGTH_SHORT);
            }

        }

        @Override
        public void onFail(String msg) {
            System.out.println(msg);
        }
    });

}

public void parse(final CallBack onCallBack){
    String url =""; //url

    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            F2FHolder adder = new F2FHolder();
            try {
                int count = response.getInt("count");
                JSONArray jsonArray = response.getJSONArray("recipes");
                for(int i=0; i<count;i++){
                    JSONObject f2f = jsonArray.getJSONObject(i);
                    String FName = f2f.getString("title");
                    String link = f2f.getString("f2f_url");
                    adder.setF2FName(FName);
                    adder.setUrl(link);
                    holderArray.add(adder);

                }
                onCallBack.onSuccess(holderArray);



            } catch (JSONException e) {
                e.printStackTrace();
                onCallBack.onFail(e.toString());
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
        }
    });
    rQueue.add(request);


}


class f2fAdapter extends BaseAdapter{
    @Override
    public int getCount() {
        return holderArray.size();
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        convertView = getLayoutInflater().inflate(R.layout.edittextview,null);
        final TextView textView = (TextView)convertView.findViewById(R.id.editTextBox);
        textView.setText(holderArray.get(position).getF2FName());

        return convertView;
    }
}

public interface CallBack {
    void onSuccess(ArrayList<F2FHolder> holderArray);

    void onFail(String msg);
}

}

...