其更好地使用惰性加载
您可以使用thest1/LazyList
或高级图像缓存Android的通用 - 图片 - 装载机 From here
Android的Universal- Image-Loader包含不同的例子来列出从URL到列表视图的图像。
编辑
你的主要Functiom后,您可以设置适配器
在你的代码的设置和初始化内部列表视图for循环这是错误的,你需要使用自定义适配器来使用延迟加载来列出图像。下面的代码是我编辑了它的一部分后的代码。
// Getting JSON from URL
List<NameValuePair> params = new ArrayList<NameValuePair>();
// getting JSON string from URL
JSONObject json1 = jParser.makeHttpRequest(url_all_products,"GET",params);
Log.d("All Products: ", json1.toString());
try {
products = json1.getJSONArray(TAG_PRODUCTS);
// looping through All Products
for (int i = 0; i < products.length(); i++) {
JSONObject c = products.getJSONObject(i);
String name = c.getString(TAG_NAME);
String url = c.getString(TAG_URL);
HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_URL, url);
map.put(TAG_NAME, name);
productsList.add(map);
}
//DON'T SET ADAPTER IN A LOOP
MyListViewAdaptor adapter = new MyListViewAdaptor(
getActivity(), productsList,
);
ListView list = (ListView) getView().findViewById(R.id.list);
list.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace();
}
写适配器俗以显示图像进行比SimpleAdapter其他的列表视图,并使用在adpator在惰性加载所用的功能和显示image.Let请MyListViewAdaptor.The例子如下
给出一个适配器
MyListViewAdaptor.java
public class MyListViewAdaptor extends BaseAdapter {
// Declaring Variables
private Activity activity;
private ArrayList<HashMap<String, String>> myarray;
private static LayoutInflater inflater = null;
public ImageLoader imageLoader;
// PLAESE READ ImageLoader IS A CLASS FROM LIB thest1/LazyList LAZYLOADING
public MyListViewAdaptor(Activity a, ArrayList<HashMap<String, String>> myarray) {
activity = a;
this.myarray = myarray;
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader = new ImageLoader(activity);
}
public int getCount() {
return myarray.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
if (convertView == null)
// Get the view from mainpage_row.xml
vi = inflater.inflate(R.layout.yourlistviewrowname, null);
ImageView userImage = (ImageView) vi
.findViewById(R.id.youtimageviewname);
TextView textName = (TextView) vi.findViewById(R.id.yourtextviewname);
HashMap<String, String> datamap = new HashMap<String, String>();
datamap = myarray.get(position);
textName.setText(datamap.get("yourTextKeyHere"));
imageLoader.DisplayImage(datamap.get("yourImageKeyHere"), userImage);
return vi;
}
}
不要忘记添加权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
希望这将帮助你
使用Android-Universal-Image-Loader – sakir
我不知道如何,我需要例如e – user3730912