簡體   English   中英

如何從數據庫中獲取圖像並將其顯示在列表視圖中?

[英]How to fetch images from database and display them in listview?

我試圖從.net Web服務獲取數據。 我越來越喜歡JSON響應 但是我無法獲取圖像並將其設置為圖像視圖。 我完成的編碼如下。 提供解決方案

public class DisplayList extends ListActivity {

    private static final String TAG_CATEGORY = "main_name";
    private static final String TAG_SUBCAT = "cat_name";
    private static final String TAG_CODE = "code";
    private static final String TAG_NAME = "name";
    private static final String TAG_RATE = "rate";
    private static final String TAG_RATE2 = "rate2";
    private static final String TAG_RATE3 = "rate3";
    private static final String TAG_IMAGE = "img";

    ArrayList<DetailsVO> mListCustomerDetails = null;
    ArrayList<HashMap<String, String>> productlist;

    String subc;


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

        productlist = new ArrayList<HashMap<String, String>>();

        Bundle extras = getIntent().getExtras();
        if (extras != null) {
            subc = extras.getString("Subcat");
        }

        new AsyncCallSoap1().execute();
        productlist.clear();
    }

    public class AsyncCallSoap1 extends AsyncTask<String,Void,String> {
        private final ProgressDialog dialog=new ProgressDialog(DisplayList.this);

        //String tal_on=taluka.getText().toString();

        @Override
        protected String doInBackground(String... params) {
            CallSoap com=new CallSoap();
            String SOAP_ACTION="http://tempuri.org/IprotechService/SelectSuCatgeory";
            String OPERATION_NAME="SelectSuCatgeory";
            String response = com.getDetails(OPERATION_NAME,SOAP_ACTION);

            if(response!=null){
                try {

                    JSONArray array1 = new JSONArray(response);

                    for(int i=0;i<array1.length();i++)
                    {
                        JSONObject obj1 = array1.getJSONObject(i);
                        String out_category = obj1.getString(TAG_CATEGORY);
                        String out_subcat = obj1.getString(TAG_SUBCAT);
                        String out_code = obj1.getString(TAG_CODE);
                        String out_name = obj1.getString(TAG_NAME);
                        String out_rate = obj1.getString(TAG_RATE);
                        String out_rate2 = obj1.getString(TAG_RATE2);
                        String out_rate3 = obj1.getString(TAG_RATE3);
                        String out_img = obj1.getString(TAG_IMAGE);
                        // Toast.makeText(DetailsList.this, categoryId, Toast.LENGTH_LONG).show();

                        if(subc.equalsIgnoreCase(out_subcat)){
                            HashMap<String, String> details = new HashMap<String, String>();
                            details.put(TAG_NAME,out_name);
                            details.put(TAG_RATE,"Rs. "+out_rate);
                            details.put(TAG_IMAGE,out_img);

                            productlist.add(details);
                        }
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
            return response;
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            //Showing progress dialog
            dialog.setMessage("Please wait...");
            dialog.setCancelable(false);
            dialog.show();
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            dialog.dismiss();

            ListAdapter adapter = new SimpleAdapter(
                    DisplayList.this, productlist,
                    R.layout.row_layout, new String[] {TAG_IMAGE, TAG_NAME, TAG_RATE,},
                    new int[] { R.id.imageView2,R.id.textView2,
                            R.id.textView3});

            // contactList.notifyDataSetChanged();
            setListAdapter(adapter);
        }
    }
}

您應該詢問后端人員什么是圖像的根文件夾。

它應該看起來像這樣:“ http://domain.com/images/

那么您只需合並圖像名稱:

String image_name = "toy.png"
String image_url = "http://domain.com/images/"+image_name;

然后使用畢加索或其他將圖像加載到圖像視圖的方式:

Picasso.with(context)
  .load(image_url)
  .resize(50, 50)
  .centerCrop()
  .into(imageView)

用於在android中的imageview中顯示圖像,首先將滑行編譯到gradle中。

compile 'com.github.bumptech.glide:glide:3.7.0'

然后在您的適配器getView方法中從url這樣獲取圖像。

ImageView imageView = (ImageView) itemView.findViewById(R.id.imageView);
GlideDrawableImageViewTarget imageViewTarget = new GlideDrawableImageViewTarget(imageView);
Glide.with(mContext).load(url).placeholder(R.raw.loading).error( R.drawable.nophoto ).into(imageViewTarget);
  1. 如果您在數據庫byteArray圖像作為byteArray表示,

    • 接收該byteArray ,然后將其轉換為位圖。 使用,

       Bitmap bitmap = BitmapFactory.decodeByteArray(byteArray , 0, byteArray.length); 
  2. 如果您將image as an url手段,則可以使用一些庫,

這可能對您有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM