Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

JSON कैसे mysql से छवियों को पार्स करें और सूचीदृश्य को पॉप्युलेट करें

यदि आपकी समस्या यह है कि जिस डेटा को आप http://www.spinner.bl.ee/images/ATE.png के रूप में सामने लाना चाहते हैं। http:\/\/spinner.bl.ee\/images\/ATE.png के रूप में सामने आ रहा है , यह org.json.JSONObject . के लिए कोई समस्या नहीं होनी चाहिए जब यह आपके यूआरएल से JSONObject पर स्ट्रिंग लोड करता है; क्या आपने इस कोड का परीक्षण किया है?

आपके सर्वर तक पहुंचने वाले कुछ AsyncTasks का कार्यान्वयन यहां दिया गया है; केवल एक गतिविधि है, MainActivity.java, और फिर StockInformation.java एक वस्तु के रूप में।

public class MainActivity extends Activity {

    ProgressDialog pDialog;
    ListView listView;
    private StockAdaptor stockAdaptor;
    String jsonResult = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_); //Just a listView, shown below
        listView = (ListView) findViewById(android.R.id.list);
        new JsonReadTask().execute("http://spinner.bl.ee/getstocks.php"); //YOUR URL JSON SERVER, IF IT IS DIFFERENT FROM THAT SUPPLIED ABOVE
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        return true; //No options
    }

    public void onStart() {
        super.onStart();

        stockAdaptor = new StockAdaptor(this); //Create a new StockAdaptor
    }

    public static String strFromStream(InputStream in) throws IOException { //Simple function, getting a String from an InputStream
        StringBuilder out = new StringBuilder();
        BufferedReader breader = new BufferedReader(new InputStreamReader(in));
        String cline;
        String newLine = System.getProperty("line.separator");
        while ((cline = breader.readLine()) != null) {
            out.append(cline);
            out.append(newLine);
        }
        return out.toString();
    }

    private class StockAdaptor extends BaseAdapter { //The stocks list adaptor

        class ViewHolder {
            TextView name;
            TextView price;
            ImageView image; 
        }

        private LayoutInflater layoutInflater;
        private StockInformation[] stocks = null; //Array of stocks
        private ListView stocksListView = null;

        public StockAdaptor(Context context) {
            super();
            layoutInflater = LayoutInflater.from(context);
        }

        public void setStockList(StockInformation[] stocksinfo) {
            this.stocks = stocksinfo;// //////////////LITERALLY THIS

        }

        @Override
        public int getCount() {
            return stocks.length;
        }

        @Override
        public Object getItem(int position) {
            return stocks[position];
        }

        public StockInformation[] getAll() { //Return the array of stocks
            return stocks;
        }

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

        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder; //New holder
            if (convertView == null) {
                convertView = layoutInflater.inflate(R.layout.list_item,
                        null);
                holder = new ViewHolder();
                // Creates the new viewholder define above, storing references to the children
                holder.name = (TextView) convertView.findViewById(R.id.name);
                holder.price = (TextView) convertView.findViewById(R.id.price);
                holder.image = (ImageView) convertView.findViewById(R.id.image);

                stocksListView = (ListView) findViewById(android.R.id.list);

                if (holder.image != null) {
                    if (holder.image.getDrawable() == null) {
                        new ImageDownloaderTask(holder.image, null)                                 .execute(stocks[position].imageurl); //Download the image using the imageurl

                    }
                }
                convertView.setTag(holder);
            } else {
                stocksListView = (ListView) findViewById(android.R.id.list);
                holder = (ViewHolder) convertView.getTag();
            }

            holder.name.setText(stocks[position].name);
            holder.price.setText(stocks[position].price);

            return convertView;
        }
    }

    private class JsonReadTask extends AsyncTask<String, Void, String> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(MainActivity.this);
            pDialog.setTitle("waiting");
            pDialog.setMessage("getting stocks");
            pDialog.setCancelable(false);
            pDialog.show();
        }

        @Override
        protected String doInBackground(String... params) {
            if (URLUtil.isValidUrl(params[0])) {
                final AndroidHttpClient client = AndroidHttpClient.newInstance("Android");
                final HttpGet getRequest = new HttpGet(params[0]);
                try {
                    HttpResponse response = client.execute(getRequest);
                    final HttpEntity httpentity = response.getEntity();
                    if (httpentity != null){
                        InputStream inputStream = null;
                        try {
                            inputStream = httpentity.getContent();
                            jsonResult = strFromStream(inputStream);
                            Log.i("", jsonResult);
                            return jsonResult;
                        } catch (IllegalArgumentException e) {
                            //
                        } finally {
                            httpentity.consumeContent();
                        }
                    }
                } catch (ClientProtocolException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    client.close();
                }
            }
            return null;
        }

        @Override
        protected void onPostExecute(String result) {

            ListDrwaer();
            pDialog.dismiss();
        }

    }// end async task

    // build hash set for list view
    public void ListDrwaer() {

        try {
            if (jsonResult!=null) {
                JSONObject jsonResponse = new JSONObject(jsonResult);
                JSONArray jsonMainNode = jsonResponse.optJSONArray("metoxes");
                Vector<StockInformation> vstocks = new Vector<StockInformation>();
                for (int i = 0; i < jsonMainNode.length(); i++) {
                    JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
                    StockInformation stock = new StockInformation();
                    stock.name = jsonChildNode.optString("name");
                    stock.price = jsonChildNode.optString("price");
                    stock.imageurl = jsonChildNode.getString("image");
                    Log.i("StockLog", stock.name + stock.price + stock.imageurl);
                    vstocks.add(stock);
                }
                StockInformation[] stocks = new StockInformation[jsonMainNode.length()];

                int stockscount = jsonMainNode.length();
                for (int n = 0; n < stockscount; n++) 
                {               
                    stocks[n] = vstocks.get(n);
                }
                stockAdaptor.setStockList(stocks);
                listView.setAdapter(stockAdaptor);
            } else {
                Toast.makeText(getApplicationContext(), "Error; jsonResult null",
                        Toast.LENGTH_SHORT).show();
            }
        } catch (JSONException e) {
            Toast.makeText(getApplicationContext(), "Error" + e.toString(),
                    Toast.LENGTH_SHORT).show();
        }
    }

    private class ImageDownloaderTask extends AsyncTask<String, Void, Bitmap> {
        private final WeakReference<ImageView> imageViewReference;

        public ImageDownloaderTask(ImageView imageView, View view) {
            imageViewReference = new WeakReference<ImageView>(imageView);
        }

        @Override
        // Actual download method, run in the task thread
        protected Bitmap doInBackground(String... params) {
            // params comes from the execute() call: params[0] is the url.
            return downloadBitmap(params[0]);
        }

        @Override
        // Once the image is downloaded, associates it to the imageView
        protected void onPostExecute(Bitmap bitmap) {
            if (isCancelled()) {
                bitmap = null;
            }

            if (imageViewReference != null) {
                ImageView imageView = imageViewReference.get();
                if (imageView != null) {

                    if (bitmap != null) {
                        imageView.setImageBitmap(bitmap);
                    } else {
                        //
                    }
                }

            }

        }

        Bitmap downloadBitmap(String url) {
            if(URLUtil.isValidUrl(url)){

                final AndroidHttpClient client = AndroidHttpClient.newInstance("Android");
                final HttpGet getRequest = new HttpGet(url);
                try {
                    HttpResponse response = client.execute(getRequest);
                    final int statusCode = response.getStatusLine().getStatusCode();
                    if (statusCode != HttpStatus.SC_OK) {
                        Log.w("ImageDownloader", "Error " + statusCode
                                + " while retrieving bitmap from " + url);
                        return null;
                    }

                    final HttpEntity entity = response.getEntity();
                    if (entity != null) {
                        InputStream inputStream = null;
                        try {
                            inputStream = entity.getContent();
                            try {
                                byte[] buffer = new byte[8192];
                                int bytesRead;
                                ByteArrayOutputStream output = new ByteArrayOutputStream();
                                while ((bytesRead = inputStream.read(buffer)) != -1) {
                                    output.write(buffer, 0, bytesRead);
                                }   
                                return BitmapFactory.decodeByteArray(output.toByteArray(), 0, output.toByteArray().length);
                            } catch (IllegalArgumentException e) {
                                e.printStackTrace();
                                Log.i("IAE", "in stocks");
                                return null;
                            }
                        } finally {
                            if (inputStream != null) {
                                inputStream.close();
                            }
                            entity.consumeContent();
                        }
                    }
                } catch (Exception e) {
                    getRequest.abort();
                    Log.w("ImageDownloader", "Error while retrieving bitmap from " + url);
                } finally {
                    if (client != null) {
                        client.close();
                    }
                }
                return null;

            }
            return null;
        }

    }
}

अलग से परिभाषित:StockInformation.java; स्टॉक ऑब्जेक्ट।

public class StockInformation {
    public String name;
    public String price;
    public String imageurl; 
}

और फिर xml फ़ाइलें:activity_.xml (केवल ListView शामिल है);

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".Activity" >

        <ListView
        android:id="@+id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>
</RelativeLayout>

और list_item.xml (केवल छवि और प्रत्येक स्टॉक के लिए आवश्यक दो टेक्स्ट):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:minHeight="50dp"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <ImageView
            android:id="@+id/image"
            android:layout_width="70dp"
            android:layout_height="70dp" />

        <TextView
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:lineSpacingExtra="3dp"
            android:paddingLeft="5dp"
            android:paddingTop="5dp"
            android:text="" />

        <TextView
            android:id="@+id/price"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="5dp"
            android:paddingTop="5dp"
            android:text="" />
    </LinearLayout>

</LinearLayout>



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL बोली कॉन्फ़िगर नहीं है (Phpstorm)

  2. mysql में अपलोड होने पर एक्सेल से तारीख बदल जाती है

  3. एकल JDBC स्टेटमेंट ऑब्जेक्ट का उपयोग करके कई प्रश्नों को निष्पादित करें

  4. PHP/MySQL:डेटाबेस में मॉडल दोहराए जाने वाले ईवेंट लेकिन दिनांक सीमाओं के लिए क्वेरी

  5. MySQL लैग/लीड मुद्दा