public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener { private XListView xlv; private MyAdapter adapter; private ArrayList<Data.DataBean.ArticleListBean> list; private String urlPath = "http://zkread.com/htnewsroom/v2.0/mobileapp/user-0/categories/articles?itemType=recommendation&itemName=%25E6%258E%25A8%25E8%258D%2590&itemId=-1&size=20&firstId=1338557&page="; private int page=1; private Handler handler =new Handler(){ @Override public void handleMessage(Message msg) { Gson gson =new Gson(); Data data = gson.fromJson(msg.obj.toString(), Data.class); list.addAll(data.getData().getArticleList()); adapter.notifyDataSetChanged(); stopXList(); } }; private void stopXList() { xlv.stopRefresh(); xlv.stopLoadMore(); xlv.setRefreshTime("刚刚"); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); } private void initData() { new Thread(){ @Override public void run() { String result = Utils.parmrs(urlPath + page); Message msg = Message.obtain(); msg.what=1; msg.obj=result; handler.sendMessage(msg); } }.start(); } private void initView() { xlv = (XListView) findViewById(R.id.xlv); xlv.setPullLoadEnable(true); xlv.setXListViewListener(this); list = new ArrayList<>(); adapter=new MyAdapter(this,list); xlv.setAdapter(adapter); } @Override public void onRefresh() { page=1; list.clear(); initData(); } @Override public void onLoadMore() { page++; initData(); } }public class MyAdapter extends BaseAdapter{ private Context context; private List<Data.DataBean.ArticleListBean> list; ImageLoader imageloader; DisplayImageOptions options; private final int TYPE0 = 0; private final int TYPE1 = 1; public MyAdapter(Context context, List<Data.DataBean.ArticleListBean> list) { this.context = context; this.list = list; //创建默认的ImageLoader配置参数 ImageLoaderConfiguration configuration = ImageLoaderConfiguration .createDefault(context); //将configuration配置到imageloader中 imageloader=ImageLoader.getInstance(); imageloader.init(configuration); options=new DisplayImageOptions.Builder() .cacheInMemory(true) .cacheOnDisk(true) .bitmapConfig(Bitmap.Config.ARGB_8888) .showImageOnLoading(R.mipmap.ic_launcher) .showImageForEmptyUri(R.mipmap.ic_launcher) .showImageOnFail(R.mipmap.ic_launcher) .build(); } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public int getItemViewType(int position) { // Log.e("getItemViewType", "getItemViewType: "+position); // switch (position){ // case TYPE0: // return TYPE0; // case TYPE1: // return TYPE1; // default: // return TYPE1; // } return list.get(position).getImgSrc().startsWith("http")?TYPE1:TYPE0; } @Override public int getViewTypeCount() { return 2; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder=null; Log.e("getView", "getView: "+position); int type = getItemViewType(position); if(convertView==null){ holder=new ViewHolder(); if(type==TYPE0){ convertView=View.inflate(context,R.layout.item0,null); }else if(type==TYPE1){ convertView=View.inflate(context,R.layout.item,null); holder.image = (ImageView)convertView.findViewById(R.id.image); } holder.title= (TextView) convertView.findViewById(R.id.title); holder.site= (TextView) convertView.findViewById(R.id.site); holder.time= (TextView) convertView.findViewById(R.id.time); convertView.setTag(holder); }else{ holder= (ViewHolder) convertView.getTag(); } Data.DataBean.ArticleListBean bean = list.get(position); holder.title.setText(bean.getTitle()); holder.site.setText(bean.getSite()); holder.time.setText(longData2Str(bean.getCreateTime())); if(type==TYPE1){ imageloader.displayImage(bean.getImgSrc(),holder.image,options); } return convertView; } class ViewHolder{ TextView title,site,time; ImageView image; } public String longData2Str(long time){ Date date=new Date(time); SimpleDateFormat format=new SimpleDateFormat("HH:mm"); return format.format(date); } }
xml布局文件 item0<?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" android:paddingLeft="5dp" android:paddingRight="5dp" android:paddingTop="3dp" android:paddingBottom="3dp"> <TextView android:id="@+id/title" android:layout_width="match_parent" android:textSize="16sp" android:textStyle="bold" android:textColor="#3c4c5d" android:layout_height="60dp"/> <RelativeLayout android:layout_width="match_parent" android:layout_height="40dp" android:orientation="horizontal"> <TextView android:id="@+id/site" android:textSize="14sp" android:textColor="#c3c3c3" android:layout_alignParentLeft="true" android:layout_width="wrap_content" android:layout_height="match_parent"/> <TextView android:id="@+id/time" android:textSize="14sp" android:textColor="#c3c3c3" android:layout_alignParentRight="true" android:layout_width="wrap_content" android:layout_height="match_parent"/> </RelativeLayout> </LinearLayout>
布局文件 item
<?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"> <LinearLayout android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:orientation="vertical" android:paddingLeft="5dp" android:paddingRight="5dp" android:paddingTop="3dp" android:paddingBottom="3dp"> <TextView android:id="@+id/title" android:layout_width="match_parent" android:textSize="16sp" android:textStyle="bold" android:textColor="#3c4c5d" android:layout_height="60dp"/> <RelativeLayout android:layout_width="match_parent" android:layout_height="40dp" android:orientation="horizontal"> <TextView android:id="@+id/site" android:textSize="14sp" android:textColor="#c3c3c3" android:layout_alignParentLeft="true" android:layout_width="wrap_content" android:layout_height="match_parent"/> <TextView android:id="@+id/time" android:textSize="14sp" android:textColor="#c3c3c3" android:layout_alignParentRight="true" android:layout_width="wrap_content" android:layout_height="match_parent"/> </RelativeLayout> </LinearLayout> <ImageView android:id="@+id/image" android:layout_width="100dp" android:layout_height="100dp" android:scaleType="fitXY"/> </LinearLayout>
本文介绍如何使用XListView实现列表的下拉刷新和上拉加载更多功能,并通过自定义Adapter来展示不同类型的列表项,包括纯文本项和包含图片的项。此外,还介绍了如何使用ImageLoader进行图片加载。
2407

被折叠的 条评论
为什么被折叠?



