Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 列表视图中的Android JSON数据不工作_Java_Android_Json_Listview - Fatal编程技术网

Java 列表视图中的Android JSON数据不工作

Java 列表视图中的Android JSON数据不工作,java,android,json,listview,Java,Android,Json,Listview,我正在使用json从mysql数据库检索mysql数据。它工作正常。但现在我要做的是将这些数据放到android listview中。我收集了一种类型的数据(item_name)并将其放入arraylist中。然后我将它添加到列表视图中。当我运行程序时,它崩溃了。这是我的密码 公共类FirstActivity扩展了ActionBarActivity{ private TextView view; private String startPosition = "0"; private Strin

我正在使用json从mysql数据库检索mysql数据。它工作正常。但现在我要做的是将这些数据放到android listview中。我收集了一种类型的数据(item_name)并将其放入arraylist中。然后我将它添加到列表视图中。当我运行程序时,它崩溃了。这是我的密码


公共类FirstActivity扩展了ActionBarActivity{

private TextView view;
private String startPosition = "0";
private String endPosition = "5";
private List<ProductData> productList = new ArrayList<ProductData>();;

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

    this.data(view);
    productListView();

    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment()).commit();
    }
}

private void productListView() {
    ArrayAdapter<ProductData> adapter = new MyListAdapter();
    ListView list = (ListView) findViewById(R.id.productList);
    list.setAdapter(adapter);
}

private class MyListAdapter extends ArrayAdapter<ProductData> {
    public MyListAdapter() {
        super(FirstActivity.this, R.layout.item_layout, productList);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View itemView = convertView;
        if(itemView == null) {
            itemView = getLayoutInflater().inflate(R.layout.item_layout, parent, false);
        }

        ProductData currentProduct = productList.get(position);

        TextView itemName = (TextView) findViewById(R.id.item_name);
        itemName.setText(currentProduct.getProductName());

        return itemView;
    }

}


@Override
public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.first, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

/**
 * A placeholder fragment containing a simple view.
 */
public static class PlaceholderFragment extends Fragment {

    public PlaceholderFragment() {
    }

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

public void data(View view) {

    Log.d("inside onPreExe", "on click");
    Async(view);

}

private class ProcessProduct extends AsyncTask<String, String, JSONObject> {

    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();

        Log.d("startPosition", startPosition);
        Log.d("endPosition", endPosition);

        Log.d("inside onPreExe", "inside onPreExe");

    }

    @Override
    protected JSONObject doInBackground(String... arg0) {
        // TODO Auto-generated method stub
        ProductData productdata = new ProductData();
        JSONObject json = productdata.productDetails(startPosition,
                endPosition);
        Log.d("inside", "doInBack");

        // for next 5 items
        int startpostion = Integer.parseInt(startPosition) + 5;
        startPosition = Integer.toString(startpostion);

        return json;
    }

    @Override
    protected void onPostExecute(JSONObject json) {
        // TODO Auto-generated method stub
        super.onPostExecute(json);




        Log.d("inside onPreExe", "inside onPostExe");

        try {

            JSONArray products = json.getJSONArray("product");
            for (int i = 0; i < products.length(); i++) {
                JSONObject product = products.getJSONObject(i);

                String item_name = product.getString("item_name");

                productList.get(i).setProductName(item_name);

                Log.d("item name", item_name);



            }

        } catch (NumberFormatException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

public void Async(View view) {
    Log.d("inside onPreExe", "inside Async");
    new ProcessProduct().execute();
}

在DoInBackground()方法中使用此操作,而不是在postExecute()中使用此操作。它仅用于显示UI

     try {

        JSONArray products = json.getJSONArray("product");
        for (int i = 0; i < products.length(); i++) {
            JSONObject product = products.getJSONObject(i);

            String item_name = product.getString("item_name");

            productList.get(i).setProductName(item_name);

            Log.d("item name", item_name);



        }

    } catch (NumberFormatException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
试试看{
JSONArray products=json.getJSONArray(“产品”);
对于(int i=0;i
没有朋友。没有问题。当我删除listview时,它可以正常工作。问题出现在listview函数中。listview列表=(listview)findViewById(R.id.productList);list.setAdapter(适配器);在postExecute()中使用此选项参见..在此链接中显示ListView中的所有产品。。我把它贴在上面。朋友,请检查它。查看逻辑。最初,您正在调用此方法。productListView();因此,它直接转到该方法并显示null异常。删除该方法并在postExecute中显示listview和适配器
     try {

        JSONArray products = json.getJSONArray("product");
        for (int i = 0; i < products.length(); i++) {
            JSONObject product = products.getJSONObject(i);

            String item_name = product.getString("item_name");

            productList.get(i).setProductName(item_name);

            Log.d("item name", item_name);



        }

    } catch (NumberFormatException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}