New Ribbon
Canva+AI創意設計與品牌應用250招:從商業技巧、社群祕技到AI圖文影音特效 快快樂樂學威力導演2024.影音剪輯與AI精彩創作 文淵閣工作室祝福大家新年快樂.龍年吉祥 Power Automate自動化超效率工作術 Midjourney AI圖像魔導書:搭配ChatGPT魔法加倍 超人氣FB+IG+LINE社群經營與行銷力(第二版) 翻倍效率工作術:不會就太可惜的 Excel × ChatGPT 自動化應用 AppInventor2零基礎入門班中文版(第六版) Python零基礎入門班(第四版) C語言學習聖經 用Canva設計超快超質感:平面、網頁、電子書、簡報、影片製作與AI繪圖最速技 PHP8/MySQL網頁程式設計自學聖經 翻倍效率工作術 - 不會就太可惜的Power BI大數據視覺圖表設計與分析(第三版) 社群經營一定要會的影音剪輯與動畫製作術 Notion高效管理250招:筆記×資料庫×團隊協作,數位生活與工作最佳幫手 Office 2021高效實用範例必修16課(附500分鐘影音教學/範例檔) Excel自學聖經(第二版):從完整入門到職場活用的技巧與實例大全 網路開店×拍賣王:蝦皮來了(第二版) 專家都在用的Google最強實戰:表單、文件、試算、簡報、遠距與線上會議 超人氣 Instagram 視覺行銷力(第二版):小編不敗,經營 IG 品牌人氣王的 120 個秘技!

 

  Android SQL與ListView上圖片的問題

wei

wei
更新時間:2017/3/15 下午 08:46:22

 

老師你好:
問題是這樣的,我想要將圖片的路徑儲存於SQLite中(例如R.drawable),並利用 SimpleCursorAdapter更新圖片到自訂ListView中的imageView.我在網路上查了一個禮拜,大都只有把圖片存到database,請問我要怎麼做才能將路徑連結過去

文淵閣工作室

文淵閣工作室
更新時間:2017/3/19 下午 05:44:56

 

您好:
您的問題應該是 Imageview 如何載入 SDCARD 或 url 的圖檔,這裡有一篇利用 AsyncTask 非同步載入 url 圖檔,您可以參考。
http://stackoverflow.com/questions/41519292/how-to-load-image-from-web-in-imageviewmain-activity-for-an-app


附我們測試的範例。<ListView_URL.rar> 請由這個網址下載。
https://www.dropbox.com/s/n6kx0hpw8mo6riz/ListView_URL.rar?dl=0


// 主要程式碼
public class MainActivity extends AppCompatActivity {
    ListView lstPrefer;
//    int[] resIds = new int[]{ R.drawable.basketball, R.drawable.football,R.drawable.baseball, R.drawable.other}; // 不用了
    String[] Balls= new String[] {"籃球","足球","棒球","其他"};
    String[] engNames = { "Basket Ball", "Foot Ball","Base Ball","Other"};

    String[] urls = { "basketball", "football","baseball","other"}; // 新加入模擬取得  SQLite 的資料
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 取得介面元件
        lstPrefer=(ListView)findViewById(R.id.lstPrefer);

        // 建立自訂的 Adapter
        MyAdapter adapter=new MyAdapter(this);

        // 設定 ListView 的資料來源
        lstPrefer.setAdapter(adapter);
    }

    public class MyAdapter extends BaseAdapter {
        private LayoutInflater myInflater;
        public MyAdapter(Context c){
            myInflater = LayoutInflater.from(c);
        }
        @Override
        public int getCount(){
            return Balls.length;
        }
        @Override
        public Object getItem(int position){
            return Balls[position];
        }
        @Override
        public long getItemId(int position){
            return position;
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent){
            convertView = myInflater.inflate(R.layout.mylayout, null);

            // 取得 mylayout.xml 中的元件
            ImageView imgLogo = (ImageView) convertView.findViewById(R.id.imgLogo);
            TextView txtName = ((TextView) convertView.findViewById(R.id.txtName));
            TextView txtengName = ((TextView) convertView.findViewById(R.id.txtengName));

            // 設定元件內容
            //    imgLogo.setImageResource(resIds[position]); // 原來這一行不用了
            // 改為連結 url 檔案
            new DownloadImageTask(imgLogo).execute("http://www.android-examples.com/wp-content/uploads/2016/03/demo_image.jpg");

            // 這是我用本機測試
           // String url="http://192.168.0.101/exIntent04/drawable/" + urls[position] + ".png";
           // new DownloadImageTask(imgLogo).execute(url);

            txtName.setText(Balls[position]);
            //或 txtName.setText(""+getItem(position));
            txtengName.setText(engNames[position]);

            return convertView;
        }
    }

    public class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
        ImageView bmImage;
        public DownloadImageTask(ImageView bmImage) {
            this.bmImage = bmImage;
        }

        protected Bitmap doInBackground(String... urls) {
            String urldisplay = urls[0];
            Bitmap mIcon11 = null;
            try {
                InputStream in = new java.net.URL(urldisplay).openStream();
                mIcon11 = BitmapFactory.decodeStream(in);
            } catch (Exception e) {
                //  Log.e("Error", e.getMessage());
                e.printStackTrace();
            }
            return mIcon11;
        }

        protected void onPostExecute(Bitmap result) {
            bmImage.setImageBitmap(result);
        }
    }

}

小郭

小郭
更新時間:2017/3/21 下午 04:26:10

 

謝謝




 

 

Re:Android SQL與ListView上圖片的問題

請輸入姓名。

已超出字元數目的最大值。


請輸入電子郵件。

格式無效。


請輸入內容。