Android 无法在listview中显示图像

Android 无法在listview中显示图像,android,listview,imageview,Android,Listview,Imageview,我无法显示图像,但显示了文本 我已将代码从修改为以下代码 我更喜欢只使用SimpleAdapter。可能吗?因为我在任何地方都实现了与下面相同的代码 或者对下面的代码稍加修改就可以了 如何显示图像 public class MainActivity extends ListActivity { ArrayList<HashMap<String, String>> mylist; SimpleAdapter adapter; ProgressDi

我无法显示图像,但显示了文本

我已将代码从修改为以下代码

我更喜欢只使用SimpleAdapter。可能吗?因为我在任何地方都实现了与下面相同的代码

或者对下面的代码稍加修改就可以了

如何显示图像

public class MainActivity extends ListActivity {

    ArrayList<HashMap<String, String>> mylist;
    SimpleAdapter adapter;

    ProgressDialog pd ;
     ListView lv;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listplaceholder);


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

        new loadingDisplayClass().execute();
    }

    public class loadingDisplayClass extends AsyncTask<String, Integer, String> {

        protected void onPreExecute() {
             pd = new ProgressDialog(MainActivity.this);
            pd.setTitle("Loading......");
            pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            pd.show();

        }

        @Override
        protected String doInBackground(String... params) {
            // TODO Auto-generated method stub

            String url = "https://itunes.apple.com/us/rss/topalbums/limit=50/json";

            JSONObject json = JSONfunctions.getJSONfromURL(url);


            try {
                JSONObject arr2 = json.getJSONObject("feed");
                JSONArray arr = arr2.getJSONArray("entry");

                for (int i = 0; i < arr.length(); i++) {
                    JSONObject e1 = arr.getJSONObject(i);

                    JSONArray jsar = e1.getJSONArray("im:image");

                    JSONObject jsname = e1.getJSONObject("im:name");
                    String name = jsname.getString("label");


                    JSONObject jso = e1.getJSONObject("im:artist");
                    String lbl = jso.getString("label");

                        JSONObject e12 = jsar.getJSONObject(0);

                    String icon = e12.getString("label");


                     HashMap<String, String> hashmapnew = new HashMap<String, String>();


                    hashmapnew.put("icons", icon);

                    hashmapnew.put("name", name);
                    hashmapnew.put("artist", lbl);

                    mylist.add(hashmapnew);

                    publishProgress(((int) ((i + 1 / (float) arr.length()) * 100)));


                }

            } catch (JSONException e) {

                Toast.makeText(getBaseContext(),
                        "Network communication error!", 5).show();
            }

             adapter = new SimpleAdapter(getBaseContext(), mylist,
                    R.layout.list, new String[] {
                            "icons","name","artist" },
                    new int[] { R.id.image,R.id.name,R.id.artist });

            return null;
        }

        protected void onProgressUpdate(Integer... integers) {

            pd.incrementProgressBy(integers[0]);

        }

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


            setListAdapter(adapter);


            pd.dismiss();

               lv = getListView();

            lv.setTextFilterEnabled(true);
            lv.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                    @SuppressWarnings("unchecked")
                    HashMap<String, String> o = (HashMap<String, String>) lv
                            .getItemAtPosition(position);


                }
            });
        }

    }




}   
public类MainActivity扩展了ListActivity{
ArrayList mylist;
SimpleAdapter适配器;
进展性帕金森病;
ListView lv;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.listplaceholder);
mylist=新的ArrayList();
新建loadingDisplayClass().execute();
}
公共类loadingDisplayClass扩展异步任务{
受保护的void onPreExecute(){
pd=新建进度对话框(MainActivity.this);
pd.setTitle(“装载……”);
pd.setProgressStyle(ProgressDialog.STYLE_水平);
pd.show();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
//TODO自动生成的方法存根
字符串url=”https://itunes.apple.com/us/rss/topalbums/limit=50/json";
JSONObject json=JSONfunctions.getJSONfromURL(url);
试一试{
JSONObject arr2=json.getJSONObject(“提要”);
JSONArray arr=arr2.getJSONArray(“条目”);
对于(int i=0;i
我无法显示图像,但显示了文本

图像将不会显示,因为您只是将url传递给SimpleAdapter。为了显示图像,您需要首先下载上述服务返回的url中的图像

您需要创建一个自定义适配器并通过下载来显示图像

下载每个图像并在imageView中显示图像需要很多时间,并且当列表滚动时,由于listview循环视图,您的图像将始终下载。因此,您需要做的是使用或提供自动下载和缓存图像

我无法显示图像,但显示了文本

图像将不会显示,因为您只是将url传递给SimpleAdapter。为了显示图像,您需要首先下载上述服务返回的url中的图像

您需要创建一个自定义适配器并通过下载来显示图像


下载每个图像并在imageView中显示图像需要很多时间,并且当列表滚动时,由于listview循环视图,您的图像将始终下载。因此,您需要做的是使用或提供自动下载和缓存图像。

那么,我如何按照您的要求通过传递url来更改上述代码?使用任何您认为合适的url?@JamesPatrick您需要创建一个customAdapter并在其中下载图像。我在惰性列表项目的答案中给出了一个链接,请检查..其中一个示例我可以将其添加到现有代码中或从头开始。@JamesPatrick您只需创建一个自定义适配器,然后将url传递给universal imagedownloader,它将显示您的图像。除了that@JamesPatrick检查本教程,他在那里创建了一个自定义适配器,那么我如何通过使用任何您认为合适的url来传递您要求的url来更改上述代码?@JamesPatrick您需要创建一个自定义适配器并在其中下载图像。我在惰性列表项目的答案中给出了一个链接,请检查..其中一个示例我可以将其添加到现有代码中或从头开始。@JamesPatrick您只需创建一个自定义适配器,然后将url传递给universal imagedownloader,它将显示您的图像。除了that@JamesPatrick查看本教程,他在那里为QuickLea创建了一个自定义适配器+1