Android成功= 0时关闭

时间:2016-06-25 14:14:41

标签: php android sql-server

我有一个从php脚本中读取数据的程序。当成功= 1时,我的程序会运行错误,但是当成功= 0时,程序强制关闭。 logcat中没有列表错误

成功= 1这样http://prntscr.com/bkw700 成功= 0,如此http://prntscr.com/bkw796

我的代码android就像这样

Toolbar toolbar;
ImageView image;
// Progress Dialog
private ProgressDialog pDialog;
// Creating JSON Parser object
JSONParser jParser = new JSONParser();

private ListView listView;

ArrayList<HashMap<String, String>> productsList;

// url to get all products list
private static String url_all_products = "http://192.168.1.113/log_item_ign.php";

// JSON Node names
private static final String TAG_SUCCESS = "success";
private static final String TAG_PRODUCTS = "inputitemlog";
private static final String TAG_LOGO = "Item Logo";
private static final String TAG_NAME = "Name";
private static final String TAG_CODEITEM = "Item Code";
private static final String TAG_UPGRADEITEM = "Item Upgrade";
private static final String TAG_DATEITEM = "Item Date";

// products JSONArray
JSONArray products = null;
public String searchkey1;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_logitem);
    // ListView listView = (ListView) findViewById(android.R.id.list);
    // Hashmap for ListView
    Intent myIntent = getIntent();
    searchkey1 = myIntent.getStringExtra("ign");
    productsList = new ArrayList<HashMap<String, String>>();

    // Loading products in Background Thread
    new LoadAllProducts().execute();

    toolbar = (Toolbar) findViewById(R.id.toolbar);
    image = (ImageView) findViewById(R.id.thumbnail);

    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    //listView = (ListView) findViewById(R.id.lista);
    TypedValue typedValueColorPrimaryDark = new TypedValue();
    ListLogItemIGN.this.getTheme().resolveAttribute(R.attr.colorPrimary, typedValueColorPrimaryDark, true);
    final int colorPrimaryDark = typedValueColorPrimaryDark.data;
    if (Build.VERSION.SDK_INT >= 21) {
        getWindow().setStatusBarColor(colorPrimaryDark);
    }
}

// Get listview
protected ListView getListView(){
    if (listView == null) {
        listView = (ListView) findViewById(R.id.logitem);
    }
    return listView;
}

// Response from Edit Product Activity
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    // if result code 100
    if (resultCode == 100) {
        // if result code 100 is received
        // means user edited/deleted product
        // reload this screen again
        Intent intent = getIntent();
        startActivity(intent);
    }
}

/**
 * Background Async Task to Load all product by making HTTP Request
 * */
class LoadAllProducts extends AsyncTask<String, Void, String> {

    /**
     * Before starting background thread Show Progress Dialog
     * */
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(ListLogItemIGN.this);
        pDialog.setMessage("Loading. Please wait...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);
        pDialog.show();
    }

    /**
     * getting All products from url
     * */
    protected String doInBackground(String... args) {
        // Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("keyword", searchkey1));
        // getting JSON string from URL
        JSONObject json = jParser.makeHttpRequest(url_all_products, "GET", params);

        // Check your log cat for JSON reponse
        Log.d("All Products: ", json.toString());

        try {
            // Checking for SUCCESS TAG
            int success = json.getInt(TAG_SUCCESS);

            if (success == 1) {
                // products found
                // Getting Array of Products
                products = json.getJSONArray(TAG_PRODUCTS);

                // looping through All Products
                for (int i = 0; i < products.length(); i++) {
                    JSONObject c = products.getJSONObject(i);

                    // Storing each json item in variable
                    //String logo = c.getString(TAG_LOGO);
                    String name = c.getString(TAG_NAME);
                    String codeitem = c.getString(TAG_CODEITEM);
                    String upgradeitem = c.getString(TAG_UPGRADEITEM);
                    String dateitem = c.getString(TAG_DATEITEM);

                    // creating new HashMap
                    HashMap<String, String> map = new HashMap<String, String>();

                    // adding each child node to HashMap key => value
                    //map.put(TAG_LOGO, logo);
                    map.put(TAG_NAME, name);
                    map.put(TAG_CODEITEM, codeitem);
                    map.put(TAG_UPGRADEITEM, upgradeitem);
                    map.put(TAG_DATEITEM, dateitem);

                    // adding HashList to ArrayList
                    productsList.add(map);
                }
            } else {
                Toast.makeText(getApplicationContext(), "Doesn't have log item now", Toast.LENGTH_SHORT).show();
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * After completing background task Dismiss the progress dialog
     * **/
    protected void onPostExecute(String file_url) {
        // dismiss the dialog after getting all products
        pDialog.dismiss();
        // updating UI from Background Thread
        //runOnUiThread(new Runnable() {
        // public void run() {
        /**
         * Updating parsed JSON data into ListView
         * */
         ListAdapter adapter = new SimpleAdapter(
                ListLogItemIGN.this, productsList,
                R.layout.list_inputitem, new String[]{
                TAG_NAME, TAG_CODEITEM, TAG_UPGRADEITEM, TAG_DATEITEM},
                new int[]{ R.id.title, R.id.rating, R.id.genre, R.id.releaseYear});

        // updating listview
        getListView().setAdapter(adapter);
        //}
        // });
    }
}

我的代码php就像这样

<?php
/* All database connection variables */
define('DB_USER', ""); // db user
define('DB_PASSWORD', ""); // db password
define('DB_DATABASE', "RF_World"); // database name
define('DB_SERVER', "127.0.0.1"); // db server

class DB_CONNECT {
// constructor
function __construct() {
    // connecting to database
    $this->connect();
}

// destructor
function __destruct() {
    // closing db connection
    $this->close();
}

/** Function to connect with database **/
function connect() {

    // Connecting to mssql database
    $con = mssql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die(mssql_error());

    // Selecing database
    $db = mssql_select_db(DB_DATABASE) or die(mssql_error()) or die(mssql_error());

    // returing connection cursor
    return $con;
}

/** Function to close db connection **/
function close() {
    // closing db connection
    mssql_close();
}
}
/*
 * Following code will list all the products
 */

// array for JSON response
$response = array();

// connecting to db
$db = new DB_CONNECT();
$keyword=$_GET["keyword"];
// get all news update dzc
$result = mssql_query("SELECT item_code, Name, item_code, nItemCode_U,     dtGiveDate FROM tbl_ItemCharge a
INNER JOIN tbl_code_item ON nItemCode_K = item_ks
INNER JOIN tbl_base b ON a.nAvatorSerial = b.Serial
WHERE Name = '$keyword' ORDER BY dtGiveDate DESC") or die(mssql_error());

// check for empty result
if (mssql_num_rows($result) > 0) {
// looping through all results
// products node
$response["inputitemlog"] = array();

while ($row = mssql_fetch_array($result)) {

    // temp user array
    $product = array();
    $product["Item Logo"] = substr($row["item_code"], 0, 2);
    $product["Name"] = $row["Name"];
    $product["Item Code"] = $row["item_code"];
    $product["Item Upgrade"] = dechex($row["nItemCode_U"]);
    $product["Item Date"] = $row["dtGiveDate"];

    // push single product into final response array
    array_push($response["inputitemlog"], $product);
}
// success
$response["success"] = 1;

// echoing JSON response
echo json_encode($response);
} else {
// no products found
$response["success"] = 0;
$response["message"] = "No log item in $keyword";

// echo no users JSON
echo json_encode($response);
}
?>

任何人都可以帮我解决我的计划?

之前谢谢

1 个答案:

答案 0 :(得分:0)

数据,对于SimpleAdapter,productsList不能为null,请尝试以下修复,

protected void onPostExecute(String file_url) {
    // dismiss the dialog after getting all products
    pDialog.dismiss();
    if (productsList != null) { // <--- Add null check here
        ListAdapter adapter = new SimpleAdapter(
            ListLogItemIGN.this, productsList,
            R.layout.list_inputitem, new String[]{
            TAG_NAME, TAG_CODEITEM, TAG_UPGRADEITEM, TAG_DATEITEM},
            new int[]{ R.id.title, R.id.rating, R.id.genre, R.id.releaseYear});

        getListView().setAdapter(adapter);
    }

}