繁体   English   中英

从URL毕加索加载图像

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM