Java 将JSON解析为Android时仅显示第一个值

Java 将JSON解析为Android时仅显示第一个值,java,android,json,listview,Java,Android,Json,Listview,接收到多个值,但当我将JSON解析为Android时,它只显示第一个值 以下是JsonNew.php文件: require "index.php"; $user_shopID = $_POST["UniqueKey"] ; $sql_query="Select * from products where ShopID like '$user_shopID';"; $result = mysqli_query($con, $sql_query); $response = array(); whil

接收到多个值,但当我将JSON解析为Android时,它只显示第一个值

以下是JsonNew.php文件:

require "index.php";
$user_shopID = $_POST["UniqueKey"] ;
$sql_query="Select * from products where ShopID like '$user_shopID';";
$result = mysqli_query($con, $sql_query);
$response = array();
while ($row = mysqli_fetch_array($result))
{
    array_push($response,array("ProductID"=>$row[0],"Product Name"=>$row[1], "Buying Price"=>$row[3], "Selling Price"=>$row[4]));
}

echo json_encode(array("server_response"=>$response));
mysqli_close($con);
这是ContactAdapters.java:

public class ContactAdapter extends ArrayAdapter {

    List list = new ArrayList();

    public ContactAdapter(@NonNull Context context, @LayoutRes int resource) {
        super(context, resource);
    }

    public void add(Contacts object) {
        super.add(object);
        list.add(object);
    }

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

    @Nullable
    @Override
    public Object getItem(int position) {
        return list.get(position);
    }

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        View row;
        row = convertView;
        ContactHolder contactHolder;

        if (row == null) {
            LayoutInflater layoutInflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            row = layoutInflater.inflate(R.layout.row_layout, parent, false);
            contactHolder = new ContactHolder();
            contactHolder.tx_id = (TextView) row.findViewById(R.id.id);
            contactHolder.tx_name = (TextView) row.findViewById(R.id.name);
            contactHolder.tx_buy = (TextView) row.findViewById(R.id.buy);
            contactHolder.tx_sell = (TextView) row.findViewById(R.id.sell);
            row.setTag(contactHolder);
        } else {
            contactHolder = (ContactHolder) row.getTag();
        }

        Contacts contacts = (Contacts) this.getItem(position);
        contactHolder.tx_id.setText(contacts.getId());
        contactHolder.tx_name.setText(contacts.getName());
        contactHolder.tx_buy.setText(contacts.getBuy());
        contactHolder.tx_sell.setText(contacts.getSell());
        return row;
    }

    static class ContactHolder {
        TextView tx_id, tx_name, tx_buy, tx_sell;
    }
}
这是row_layout.xml

android:layout_width="match_parent"
android:layout_height="75dp"
xmlns:app="http://schemas.android.com/apk/res-auto">

<TextView
    android:id="@+id/id"
    android:layout_width="100dp"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:text="TextView"
    android:gravity="center"
    android:textColor="#000000"
    android:layout_below="@+id/textView13" />

<TextView
    android:id="@+id/name"
    android:layout_width="120dp"
    android:layout_height="match_parent"
    android:layout_toRightOf="@+id/id"
    android:text="TextView"
    android:gravity="center"
    android:textColor="#000000"
    android:layout_below="@+id/textView14" />

<TextView
    android:id="@+id/buy"
    android:layout_width="100dp"
    android:layout_height="match_parent"
    android:text="TextView"
    android:gravity="center"
    android:textColor="#000000"
    android:layout_toRightOf="@+id/name"
    android:layout_toEndOf="@+id/name"
    android:layout_alignTop="@+id/name" />

<TextView
    android:id="@+id/sell"
    android:layout_width="100dp"
    android:layout_height="match_parent"
    android:layout_toRightOf="@+id/buy"
    android:text="TextView"
    android:gravity="center"
    android:textColor="#000000"
    android:layout_alignTop="@+id/buy"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true" />
}

当我从服务器获取JSON数据时,它们是完美的,但是当我让它们显示在列表视图中时,这些数据就没有了。只有第一个数据和他的值进入列表视图

以下是截图:


在contactAdapter类中,您必须创建一个ArrayList

  ArrayList<Contact> arrayList = new ArrayList<>();
ArrayList ArrayList=new ArrayList();
您必须这样做。

更改此功能

 while (count<jsonArray.length()){
        JSONObject JO = jsonArray.getJSONObject(count);
        id = JO.getString("ProductID");
        name = JO.getString("Product Name");
        buy = JO.getString("Buying Price");
        sell = JO.getString("Selling Price");

        Contacts contacts = new Contacts(id,name,buy,sell);
        contactAdapter.add(contacts);
        count++;


    }

while(count)请发布您正在调用的部分代码
ContactAdapter.add()
from@BenP.代码已更新。请帮助我:)
  ArrayList<Contact> arrayList = new ArrayList<>();
 while (count<jsonArray.length()){
        JSONObject JO = jsonArray.getJSONObject(count);
        id = JO.getString("ProductID");
        name = JO.getString("Product Name");
        buy = JO.getString("Buying Price");
        sell = JO.getString("Selling Price");

        Contacts contacts = new Contacts(id,name,buy,sell);
        contactAdapter.add(contacts);
        count++;


    }