效果图
代码:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="bw.com.day21_demo.MainActivity"> <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/lv_id"/> </LinearLayout>
item_lv.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:layout_width="200dp" android:layout_height="150dp" android:src="@mipmap/ic_launcher" android:id="@+id/iv_id"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="标题" android:id="@+id/tv_id" android:textSize="20sp" android:layout_margin="10dp"/> </LinearLayout>
MainActivity.java
import android.app.ProgressDialog; import android.os.Bundle; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import com.google.gson.Gson; import org.xutils.common.Callback; import org.xutils.http.RequestParams; import org.xutils.x; import java.util.List; public class MainActivity extends AppCompatActivity { private ListView mLv; private MyAdapter adapter; private List<InfoBean.InfoListBean> data; private ProgressDialog pd; private String url = "http://www.moviebase.cn/uread/app/recommend/recommend?platform=2&deviceId=A8C73E0D1ED1A2BED491C9238C8FD8A0&pageContext=1&appVersion=1.7.0"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mLv = (ListView) findViewById(R.id.lv_id); pd = new ProgressDialog(MainActivity.this); pd.setIcon(R.mipmap.ic_launcher); pd.setTitle("提示"); pd.setMessage("正在加载, 请稍后...."); pd.show(); RequestParams requestParams = new RequestParams(url); x.http().get(requestParams, new Callback.CommonCallback<String>() { @Override public void onSuccess(String s) { Gson gson = new Gson(); InfoBean infoBean = gson.fromJson(s, InfoBean.class); data = infoBean.getInfoList(); adapter = new MyAdapter(MainActivity.this,data); mLv.setAdapter(adapter); pd.dismiss(); } @Override public void onError(Throwable throwable, boolean b) { } @Override public void onCancelled(CancelledException e) { } @Override public void onFinished() { } }); mLv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setIcon(R.mipmap.ic_launcher); builder.setTitle("提示"); builder.setMessage(data.get(position).getObject().getTitle()); builder.show(); } }); } }
InfoBean.java - gsonFromant 创建的实体类
MyAdapter.java
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; import org.xutils.image.ImageOptions; import org.xutils.x; import java.util.List; /** * Created by Administrator on 2017/11/22. */ public class MyAdapter extends BaseAdapter { private Context context; private List<InfoBean.InfoListBean> data; public MyAdapter(Context context, List<InfoBean.InfoListBean> data) { this.context = context; this.data = data; } @Override public int getCount() { return data.size(); } @Override public Object getItem(int position) { return data.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if(convertView==null) { convertView = LayoutInflater.from(context).inflate(R.layout.item_lv,parent,false); viewHolder = new ViewHolder(); viewHolder.iv = (ImageView) convertView.findViewById(R.id.iv_id); viewHolder.tv = (TextView) convertView.findViewById(R.id.tv_id); convertView.setTag(viewHolder); }else { viewHolder = (ViewHolder) convertView.getTag(); } InfoBean.InfoListBean infoListBean = data.get(position); InfoBean.InfoListBean.ObjectBean objectBean = infoListBean.getObject(); viewHolder.tv.setText(objectBean.getTitle()); ImageOptions options = new ImageOptions.Builder() .setFailureDrawableId(R.mipmap.ic_launcher) .setLoadingDrawableId(R.mipmap.ic_launcher) .setIgnoreGif(false) .setUseMemCache(true) .build(); x.image().bind(viewHolder.iv,objectBean.getImgUrl(),options); return convertView; } class ViewHolder { ImageView iv; TextView tv; } }
MyApp.java
import org.xutils.x; /** * Created by Administrator on 2017/11/22. */ public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); x.Ext.init(this); x.Ext.setDebug(true); } }
清单文件
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <application android:name=".MyApp" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>