WedX - журнал о программировании и компьютерных науках

Разбор данных Json в ListView с использованием Volley

Я получил свои данные в списке, но не так, как я ожидаю. Я хочу получить данные в виде списка, но он составляет список с вышеприведенным статическим представлением вот так..< /а>

Любая идея, как я это понимаю? Есть ли что-то делать с макетом?

Это моя основная активность:

private List<UserInfo> list = new ArrayList<UserInfo>();
private ListView listView;
private Adapter adapter;

    listView = findViewById(R.id.list_view);
    adapter = new Adapter(this, list);
    listView.setAdapter(adapter);

    textView1 = findViewById(R.id.Number1);
    textView2 = findViewById(R.id.ServiceName1);
    textView3 = findViewById(R.id.Amount1);

    requestQueue = Volley.newRequestQueue(this);

    jsonParse();

  }

    public void jsonParse() {

    final String fetchurl = ("https://xelwel.com.np/hamrosewaapp/api/get_organization_list");

    final StringRequest request = new StringRequest(Request.Method.POST, fetchurl, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {

            try {
                JSONObject jsonObject = new JSONObject(response);

                JSONArray jsonArray = jsonObject.getJSONArray("org_list");

                UserInfo info = new UserInfo();

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

                    JSONObject patient = jsonArray.getJSONObject(i);

                    info.setId(patient.getString("orga_orgid"));
                    info.setName(patient.getString("orga_organame"));

                    list.add(info);
                    progressbar.setVisibility(View.GONE);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

            adapter.notifyDataSetChanged();
        }

    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
        }
    }) {
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> params = new HashMap<>();
            params.put("api_key", "123456789");
            return params;
        }
    };

    requestQueue.add(request);
}

А это мой класс адаптера:

private Activity activity;
private LayoutInflater inflater;
private List<UserInfo> DataList;

public Adapter(Activity activity, List<UserInfo> dataitem) {

    this.activity = activity;
    this.DataList = dataitem;
}

@Override
public int getCount() {
    return DataList.size();
}

@Override
public Object getItem(int location) {
    return DataList.get(location);
}

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {


    if (inflater == null)
        inflater = (LayoutInflater) activity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if (convertView == null)
        convertView = inflater.inflate(R.layout.item_layout, null);

    TextView id = convertView.findViewById(R.id.Number1);
    TextView name = convertView.findViewById(R.id.ServiceName1);

    UserInfo m = DataList.get(position);

    id.setText(m.getId());
    name.setText(m.getName());

    return convertView;
}

Это мой файл макета элемента:

<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
    android:id="@+id/Textview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:padding="10dp"
    android:text="Civil Service Hospital"
    android:textColor="#000"
    android:textSize="25dp"
    android:textStyle="normal" />

<TextView
    android:id="@+id/SerialNo."
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/Textview"
    android:layout_marginLeft="5dp"
    android:layout_marginTop="10dp"
    android:paddingLeft="10dp"
    android:text="S.No."
    android:textColor="#000"
    android:textSize="20dp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/ServiceName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/SerialNo."
    android:layout_alignBottom="@+id/SerialNo."
    android:layout_centerHorizontal="true"
    android:paddingRight="20dp"
    android:text="Service Name"
    android:textColor="#000"
    android:textSize="20dp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/Amount"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/ServiceName"
    android:layout_alignBottom="@+id/ServiceName"
    android:layout_marginLeft="10dp"
    android:layout_marginStart="10dp"
    android:layout_toEndOf="@+id/ServiceName"
    android:layout_toRightOf="@+id/ServiceName"
    android:paddingBottom="10dp"
    android:paddingLeft="12dp"
    android:paddingRight="12dp"
    android:text="Amount"
    android:textColor="#000"
    android:textSize="20dp"
    android:textStyle="bold" />

    <TextView
        android:id="@+id/Number1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/SerialNo."
        android:layout_alignBaseline="@+id/ServiceName1"
        android:layout_alignBottom="@+id/ServiceName1"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginLeft="10dp"
        android:layout_marginStart="10dp"
        android:paddingLeft="20dp"
        android:text=""
        android:textColor="#000"
        android:textSize="15dp" />

<TextView
    android:id="@+id/ServiceName1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/ServiceName"
    android:layout_centerHorizontal="true"
    android:padding="10dp"
    android:text=""
    android:textColor="#000"
    android:textSize="15dp" />

<TextView
    android:id="@+id/Amount1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignEnd="@+id/Amount"
    android:layout_alignRight="@+id/Amount"
    android:layout_below="@+id/Amount"
    android:layout_marginEnd="11dp"
    android:layout_marginRight="11dp"
    android:padding="10dp"
    android:text=""
    android:textColor="#000"
    android:textSize="15dp" />

Please commit my mistake that I got with this code...


  • Пожалуйста, опубликуйте всю основную активность 22.01.2018
  • @Chandan Я редактирую свою MainActivity. Пожалуйста, проверьте мою проблему... 22.01.2018
  • Нашли проблемы? Можно ли что-то сделать с файлом layout/xml...? 22.01.2018

Ответы:


1

Проверьте это из MainActivity. Объект UserInfo должен быть создан в For Loop.

final StringRequest request = new StringRequest(Request.Method.POST, 
fetchurl, new Response.Listener<String>() {
    @Override
    public void onResponse(String response) {

        try {
            JSONObject jsonObject = new JSONObject(response);

            JSONArray jsonArray = jsonObject.getJSONArray("org_list");



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

                JSONObject patient = jsonArray.getJSONObject(i);
                UserInfo info = new UserInfo();
                info.setId(patient.getString("orga_orgid"));
                info.setName(patient.getString("orga_organame"));

                list.add(info);
                progressbar.setVisibility(View.GONE);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

        adapter.notifyDataSetChanged();
    }

}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        error.printStackTrace();
    }
}) {
    @Override
    protected Map<String, String> getParams() throws AuthFailureError {
        Map<String, String> params = new HashMap<>();
        params.put("api_key", "123456789");
        return params;
    }
};

requestQueue.add(request);
22.01.2018
  • Спасибо, я получил данные от идентификатора 1, но представление осталось прежним. Он по-прежнему использует макет выше и создает список с этим... Я хочу показать статическое представление выше как статическое, а ниже как динамическое. Вы знаете решение этой проблемы...? Я также отредактировал вопрос, вы можете просмотреть текущий результат вывода... 22.01.2018
  • Можете ли вы опубликовать свой XML-файл элемента. 22.01.2018
  • И в основном макете активности я использовал только Listview внутри RelativeLayout.. Можно ли добавить что-то еще здесь...? 22.01.2018
  • Есть идеи...? Как это сделать? 23.01.2018
  • Человек я понял! Я просто помещаю статический вид в mainlayout, и тогда это происходит. Я опубликовал свой ответ .. Спасибо, чувак, что ты есть ... 23.01.2018
  • @ Chandan Я отправил вопрос за 2 дня до этого, но он все еще остается без ответа. Я публикую один раз и жду целый день, а затем снова удаляю его и публикую снова, но никто не может ответить на мой вопрос. Не могли бы вы помочь мне с этим вопросом, который остается без ответа...? Я буду ждать вашего ответа... 27.01.2018

  • 2

    Наконец я получил свой ответ сам. Я просто проверяю и помещаю статический вид в mainActivitylayout и динамический вид в item_layout, и это происходит. Ниже приведен мой XML-файл mainlayout, который я использовал:

      <RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
       <TextView
            android:id="@+id/Number1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/SerialNo."
            android:layout_alignBaseline="@+id/ServiceName1"
            android:layout_alignBottom="@+id/ServiceName1"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_marginLeft="10dp"
            android:layout_marginStart="10dp"
            android:paddingLeft="20dp"
            android:text=""
            android:textColor="#000"
            android:textSize="15dp" />
    
        <TextView
        android:id="@+id/ServiceName1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/ServiceName"
        android:layout_centerHorizontal="true"
        android:padding="10dp"
        android:text=""
        android:textColor="#000"
        android:textSize="15dp" />
    
       <TextView
        android:id="@+id/Amount1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignEnd="@+id/Amount"
        android:layout_alignRight="@+id/Amount"
        android:layout_below="@+id/Amount"
        android:layout_marginEnd="11dp"
        android:layout_marginRight="11dp"
        android:padding="10dp"
        android:text=""
        android:textColor="#000"
        android:textSize="15dp" />
    
      </RelativeLayout>
    

    Спасибо @Chandan Kushwaha за поддержку моего вопроса...

    23.01.2018
  • Отлично @Аюш Катувал 23.01.2018
  • Всегда пожалуйста!! 23.01.2018
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]