ListView的多条目加载
2017-09-08 17:19
302 查看
一. 在MainActivity中的代码:
二 .自定义适配器
三. 自定义一个bean类
四. 配置的自定义 Imageloader 类
五. 自定义布局
1. activity_main:
2. image_one:
3. image_two:
4. image_three:
六. 最后在AndroidManifest.xml文件中设置网络请求权限;在<application>中配置自定义的ImageLoader类
name属性;
import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ListView; import com.google.gson.Gson; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.List; import Adapter.NewsAdapter; import Bean.NewsBean; public class MainActivity extends AppCompatActivity { private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView) findViewById(R.id.listView); jsonTask(); } private void jsonTask() { new AsyncTask<String,Void,String>(){ @Override protected String doInBackground(String... strings) { try { //客户端 HttpClient client = new DefaultHttpClient(); //get请求方式 HttpGet httpGet = new HttpGet(strings[0]); //响应对象 HttpResponse response = client.execute(httpGet); int statusCode = response.getStatusLine().getStatusCode(); if (statusCode == 200){ InputStream inputStream = response.getEntity().getContent(); String json = streamToString(inputStream,"utf-8"); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String result) { //解析数据 NewsBean newsBean = new Gson().fromJson(result, NewsBean.class); List<NewsBean.ResultBean.DataBean> list = newsBean.getResult().getData(); //设置适配器 NewsAdapter adapter = new NewsAdapter(MainActivity.this, list); listView.setAdapter(adapter); } }.execute("http://v.juhe.cn/toutiao/index?type=top&key=2f092bd9ce76c0257052d6d3c93c11b4"); } //Json数据解析的自定义方法 private String streamToString(InputStream inputStream, String s) { try { //转换流 InputStreamReader streamReader = new InputStreamReader(inputStream, s); //缓冲流 BufferedReader reader = new BufferedReader(streamReader); //缓冲区 StringBuilder builder = new StringBuilder(); //读取数据 String data = null; while ((data = reader.readLine())!=null){ builder.append(data); } //关流,返回数据 reader.close(); return builder.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } }
二 .自定义适配器
import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.List; import Bean.NewsBean; import activity.listview.R; public class NewsAdapter extends BaseAdapter{ private Context context; private List<NewsBean.ResultBean.DataBean> list; private final int TYPE_IMAGE_THREE = 0; private final int TYPE_IMAGE_TWO = 1; private final int TYPE_IMAGE_ONE = 2; public NewsAdapter(Context context, List<NewsBean.ResultBean.DataBean> list) { this.context = context; this.list = list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } /** * 获取视图类型的数量...也就是有多少种条目类型 */ @Override public int getViewTypeCount() { return 3; } /** * 返回当前位置条目视图的类型....返回值是int值 * @param position ...当前位置 * @return */ @Override public int getItemViewType(int position) { //根据数据中的内容进行判断,...当前位置显示的是什么内容 if (list.get(position).getThumbnail_pic_s() != null && list.get(position).getThumbnail_pic_s02() != null && list.get(position).getThumbnail_pic_s03() != null ){ return TYPE_IMAGE_THREE; }else if (list.get(position).getThumbnail_pic_s() != null && list.get(position).getThumbnail_pic_s02() != null ){ return TYPE_IMAGE_TWO; } return TYPE_IMAGE_ONE; } @Override public View getView(int i, View view, ViewGroup viewGroup) { //判断展示的视图 if (getItemViewType(i) == TYPE_IMAGE_ONE){ ImageOneHolder holder; if (view == null){ view = View.inflate(context,R.layout.image_one,null); holder = new ImageOneHolder(); //查找控件 holder.title = view.findViewById(R.id.title); holder.one = view.findViewById(R.id.image_one); //绑定数据 view.setTag(holder); }else{ //解绑 holder = (ImageOneHolder) view.getTag(); } //获取数据重新赋值 holder.title.setText("标题:"+list.get(i).getTitle()); ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s(),holder.one); } else if(getItemViewType(i) == TYPE_IMAGE_TWO){ ImageTwoHolder holder; if (view == null){ view = View.inflate(context,R.layout.image_two,null); holder = new ImageTwoHolder(); //查找控件 holder.title = view.findViewById(R.id.title); holder.image_01 = view.findViewById(R.id.image_01); holder.image_02 = view.findViewById(R.id.image_02); //绑定数据 view.setTag(holder); }else{ //解绑 holder = (ImageTwoHolder) view.getTag(); } //获取数据重新赋值 holder.title.setText("标题:"+list.get(i).getTitle()); ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s(),holder.image_01); ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s02(),holder.image_02); } else if (getItemViewType(i) == TYPE_IMAGE_THREE) { ImageThreeHolder holder; if (view == null) { view = View.inflate(context, R.layout.image_three, null); holder = new ImageThreeHolder(); //查找控件 holder.title = view.findViewById(R.id.title); holder.image_001 = view.findViewById(R.id.image_001); holder.image_002 = view.findViewById(R.id.image_002); holder.image_003 = view.findViewById(R.id.image_003); //绑定数据 view.setTag(holder); } else { //解绑 holder = (ImageThreeHolder) view.getTag(); } //获取数据重新赋值 holder.title.setText("标题:" + list.get(i).getTitle()); ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s(), holder.image_001); ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s02(), holder.image_002); ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s03(), holder.image_003); } return view; } static class ImageThreeHolder{ TextView title; ImageView image_001,image_002,image_003; } static class ImageTwoHolder{ TextView title; ImageView image_01,image_02; } static class ImageOneHolder{ TextView title; ImageView one; } }
三. 自定义一个bean类
四. 配置的自定义 Imageloader 类
import android.app.Application; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; public class ImageUtil extends Application{ @Override public void onCreate() { super.onCreate(); //配置ImageLoader类 ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(this); ImageLoader.getInstance().init(configuration); } }
五. 自定义布局
1. activity_main:
<?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="vertical"> <TextView android:id="@+id/title" android:textSize="16sp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout android:padding="3dp" android:orientation="horizontal" android:layout_marginTop="6dp" android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageViewandroid:id="@+id/image_001" android:layout_width="100dp" android:layout_height="100dp" android:layout_marginLeft="3dp" android:src="@mipmap/ic_launcher"/> <ImageViewandroid:id="@+id/image_002" android:layout_width="100dp" android:layout_height="100dp" android:layout_marginLeft="3dp" android:src="@mipmap/ic_launcher"/> <ImageViewandroid:id="@+id/image_003" android:layout_width="100dp" android:layout_height="100dp" android:layout_marginLeft="3dp" android:src="@mipmap/ic_launcher"/> </LinearLayout> </LinearLayout>
2. image_one:
<?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="vertical"> <TextView android:id="@+id/title" android:textSize="16sp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageView android:id="@+id/image_one" android:layout_width="100dp" android:layout_height="100dp" android:layout_marginLeft="3dp" android:layout_marginTop="10dp" android:src="@mipmap/ic_launcher"/> </LinearLayout>
3. image_two:
<?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="vertical"> <TextView android:id="@+id/title" android:textSize="16sp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout android:padding="3dp" android:orientation="horizontal" android:layout_marginTop="6dp" android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView android:id="@+id/image_01" android:layout_width="100dp" android:layout_height="100dp" android:layout_marginLeft="3dp" android:src="@mipmap/ic_launcher"/> <ImageView android:id="@+id/image_02" android:layout_width="100dp" android:layout_height="100dp" android:layout_marginLeft="3dp" android:src="@mipmap/ic_launcher"/> </LinearLayout> </LinearLayout>
4. image_three:
<?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="vertical"> <TextView android:id="@+id/title" android:textSize="16sp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout android:padding="3dp" android:orientation="horizontal" android:layout_marginTop="6dp" android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageViewandroid:id="@+id/image_001" android:layout_width="100dp" android:layout_height="100dp" android:layout_marginLeft="3dp" android:src="@mipmap/ic_launcher"/> <ImageViewandroid:id="@+id/image_002" android:layout_width="100dp" android:layout_height="100dp" android:layout_marginLeft="3dp" android:src="@mipmap/ic_launcher"/> <ImageViewandroid:id="@+id/image_003" android:layout_width="100dp" android:layout_height="100dp" android:layout_marginLeft="3dp" android:src="@mipmap/ic_launcher"/> </LinearLayout> </LinearLayout>
六. 最后在AndroidManifest.xml文件中设置网络请求权限;在<application>中配置自定义的ImageLoader类
name属性;
相关文章推荐
- Listview多条目加载
- ListView多条目加载
- listview多条目加载的类
- MainActivity.java11listviewmutilitemload(listview多条目加载
- listView的多条目加载(类似头条新闻之类的)
- itemlistview多条目加载
- ImageLoader多张图片&listview多条目加载
- XlistView多条目加载
- viewpager_frament_httpconnection_xlistview+双条目加载
- 复杂的ListView,多条目加载
- ListView的多条目加载的适配
- ListView多条目加载
- Android中给listview/gridview设置动画(逐条加载条目动画)
- listview多条目加载
- ListView 条目加载上滑下滑首尾缩放动画实现
- Android中给listview/gridview设置动画(逐条加载条目动画)
- ListView多条目加载
- 侧滑菜单+XListView+ImageLoader+Post请求方式+ListView加载更多条目
- ListView多条目加载
- recycleView 多条目加载 + 下拉刷新 +GridView 与 ListView 切换