1. 程式人生 > >Android中通過Picasso來載入網路圖片,並通過ListView顯示出來。

Android中通過Picasso來載入網路圖片,並通過ListView顯示出來。

在使用之前需要將Picasso的jar包匯入。

MainActivity程式碼:

import java.util.ArrayList;
import java.util.List;


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;


public class MainActivity extends Activity implements OnClickListener {
private Button btn;
private ListView listView;
private List<Images> list;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.btn);
listView = (ListView) findViewById(R.id.listView);
btn.setOnClickListener(this);
list = new ArrayList<Images>();
list.add(new Images(
"http://bpic.588ku.com/element_origin_min_pic/16/09/23/1757e4f641d3e6e.jpg",
"雪人"));
list.add(new Images(
"http://bpic.588ku.com/element_origin_min_pic/16/08/22/1557baa47b10856.jpg",
"梅花"));
list.add(new Images(
"http://bpic.588ku.com/element_origin_min_pic/16/11/03/0413ba4f6ac1c5a19f03864c9695bba3.jpg",
"蝴蝶"));
list.add(new Images(
"http://bpic.588ku.com/element_origin_min_pic/16/11/20/1158311cdcc5205.jpg",
"氣球"));
list.add(new Images(
"http://bpic.588ku.com/element_origin_min_pic/16/06/23/12576b6b4ebc191.jpg",
"藍天"));
list.add(new Images(
"http://bpic.588ku.com/element_origin_min_pic/25/03/20/1656f4dbb30e81b.jpg",
"放大鏡"));
}


@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v.getId() == R.id.btn) {
listView.setAdapter(new Adapter(list, MainActivity.this));
}
}
}

activity_main佈局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Picasso載入網路圖片" />


    <ListView
        android:id="@+id/listView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ListView>


</LinearLayout>

Images程式碼:

public class Images {
private String imageUrl;
private String name;


public Images() {
super();
}


public Images(String imageUrl, String name) {
super();
this.imageUrl = imageUrl;
this.name = name;
}


public String getImageUrl() {
return imageUrl;
}


public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}


public String getName() {
return name;
}


public void setName(String name) {
this.name = name;
}


@Override
public String toString() {
return "Images [imageUrl=" + imageUrl + ", name=" + name + "]";
}


}

Adapter程式碼:

import java.util.List;


import com.squareup.picasso.Picasso;


import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;


public class Adapter extends BaseAdapter {
private LayoutInflater flater;
private ImageView image;
private TextView textView;
private List<Images> list;
private Context context;


public Adapter(List<Images> list, Context context) {
super();
this.list = list;
this.context = context;
}


@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}


@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
}


@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if (convertView == null) {
flater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = flater.inflate(R.layout.linear, parent, false);
}
image = (ImageView) convertView.findViewById(R.id.imageView);
textView = (TextView) convertView.findViewById(R.id.textView);
Picasso.with(context).load(list.get(position).getImageUrl())
.into(image);
textView.setText(list.get(position).getName());
return convertView;
}


}

linear佈局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >


    <ImageView
        android:id="@+id/imageView"
        android:layout_width="100dp"
        android:layout_height="150dp"
        android:contentDescription="@string/app_name" />


    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="50dp" 
        android:layout_marginTop="80dp"/>


</LinearLayout>