[英]load image from url picasso
因此我已经能够将JSON读取到我的列表视图中,但是现在我试图找出在哪里可以使用picasso从URL读取这些图像。
样本JSON:
"results":
{
"name": "Luke Skywalker",
"height": "172",
"mass": "77",
"hair_color": "blond",
"skin_color": "fair",
"eye_color": "blue",
"birth_year": "19BBY",
"gender": "male",
"image": "https://loremflickr.com/320/240?lock=1"
},
{
"name": "C-3PO",
"height": "167",
"mass": "75",
"hair_color": "n/a",
"skin_color": "gold",
"eye_color": "yellow",
"birth_year": "112BBY",
"gender": "n/a",
"image": "https://loremflickr.com/320/240?lock=2"
},
我知道我需要类似以下代码的listview屏幕截图 :
String imageUri = "https://i.imgur.com/tGbaZCY.jpg";
ImageView ivBasicImage = (ImageView) findViewById(R.id.ivBasicImage);
Picasso.with(context).load(imageUri).into(ivBasicImage);
但是我不确定在哪里插入我的APP结构。 这是我的MainActivity.java:
public class MainActivity extends AppCompatActivity implements LoadJSONTask.Listener, AdapterView.OnItemClickListener {
private ListView mListView;
public static final String URL = "http://public.duethealth.com/api/project.json";
private List<HashMap<String, String>> mAndroidMapList = new ArrayList<>();
private static final String KEY_NAME = "name";
private static final String KEY_HT = "height";
private static final String KEY_MASS = "mass";
private static final String KEY_HAIR = "hair_color";
private static final String KEY_SKIN = "skin_color";
private static final String KEY_EYE = "eye_color";
private static final String KEY_BIRTH = "birth_year";
private static final String KEY_GEN = "gender";
private static final String KEY_IMAGE = "image";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = (ListView) findViewById(R.id.list_view);
mListView.setOnItemClickListener(this);
new LoadJSONTask(this).execute(URL);
}
@Override
public void onLoaded(List<StarWar> androidList) {
for (StarWar android : androidList) {
HashMap<String, String> map = new HashMap<>();
map.put(KEY_NAME, android.getName());
map.put(KEY_HT, android.getHeight());
map.put(KEY_MASS, android.getMass());
map.put(KEY_HAIR, android.getHair_color());
map.put(KEY_SKIN, android.getSkin_color());
map.put(KEY_EYE, android.getEye_color());
map.put(KEY_BIRTH, android.getBirth_year());
map.put(KEY_GEN, android.getGender());
map.put(KEY_IMAGE,android.getImage());
mAndroidMapList.add(map);
}
loadListView();
}
@Override
public void onError() {
Toast.makeText(this, "Error !", Toast.LENGTH_SHORT).show();
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(this, mAndroidMapList.get(i).get(KEY_NAME),Toast.LENGTH_LONG).show();
}
private void loadListView() {
ListAdapter adapter = new SimpleAdapter(MainActivity.this, mAndroidMapList, R.layout.list_item,
new String[] { KEY_NAME, KEY_HT, KEY_MASS, KEY_HAIR,KEY_SKIN,KEY_EYE,KEY_BIRTH,KEY_GEN,KEY_IMAGE },
new int[] { R.id.name,R.id.height, R.id.mass, R.id.hair,R.id.skin,R.id.eye,R.id.birth,R.id.gender,R.id.image});
mListView.setAdapter(adapter);
}
}
我的哈希图可以保持现状吗? 还是我需要HashMap? 由于我是一次全部加载此listview的,所以看来我需要将图像加载到我的for循环中,然后一旦我将它们加载到ListListView()中,它们就应该在那里。
如果要添加从URL加载图像的列表视图,则应创建可以完成此工作的自定义适配器 (例如回收者视图自定义适配器的示例),而不要使用正在使用的SimpleAdapter
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.