多条目加载
来源:互联网 发布:北京天际网络 编辑:程序博客网 时间:2024/06/10 08:12
package test.lilin.com.xlistduo;import android.os.Bundle;import android.os.Handler;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;import java.util.ArrayList;import java.util.List;import test.lilin.com.xlistduo.xlist.XListView;public class MainActivity extends AppCompatActivity { XListView xlv; List<News> list; Handler handler=new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); xlv= (XListView) findViewById(R.id.xlv); initData(); Myadapter myadapter=new Myadapter(); xlv.setPullLoadEnable(true); xlv.setPullRefreshEnable(true); xlv.setAdapter(myadapter); xlv.setXListViewListener(new XListView.IXListViewListener() { @Override public void onRefresh() { handler.postDelayed(new Runnable() { @Override public void run() { initData(); Toast.makeText(MainActivity.this,"上啦",Toast.LENGTH_SHORT).show(); xlv.stopRefresh(); } },2000); } @Override public void onLoadMore() { handler.postDelayed(new Runnable() { @Override public void run() { initData(); Toast.makeText(MainActivity.this,"下啦",Toast.LENGTH_SHORT).show(); xlv.stopRefresh(); } },2000); } }); } class Myadapter extends BaseAdapter { public static final int TYPE_ONE=0; public static final int TYPE_TWO=1; @Override public int getCount() { return list.size(); } //在使用多条目加载的时候 返回当前position对应的类型 //************必须满足的条件 getItemViewType的返回值 必须要小于getViewTypeCount的返回值 @Override public int getItemViewType(int position) { if (list.get(position).getType()==10001){ return TYPE_ONE; }else { return TYPE_TWO; } } //使用多条目加载时 一共有几种类型 //从写该方法后,listview控件会知道 当前的布局样式不止一种 //所以 当ListView发现convertview在复用时 类型不配不上时 会重写让convertView加载一遍布局 @Override public int getViewTypeCount() { return 2; } @Override public Object getItem(int i) { return null; } @Override public long getItemId(int i) { return 0; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder0 holder0 = null; ViewHolder1 holder1 = null; int type=getItemViewType(i); if (view==null){ switch (type) { case TYPE_ONE: view = View.inflate(MainActivity.this, R.layout.list_item0, null); holder0 = new ViewHolder0(); holder0.tv0 = (TextView) view.findViewById(R.id.tv0); view.setTag(holder0); break; case TYPE_TWO: view = View.inflate(MainActivity.this, R.layout.list_item1, null); holder1 = new ViewHolder1(); holder1.tv1 = (TextView) view.findViewById(R.id.tv1); view.setTag(holder1); break; default: break; } }else{ if(type == TYPE_ONE){ holder0 = (ViewHolder0) view.getTag(); }else{ holder1 = (ViewHolder1) view.getTag(); } } //根据不同的情况 把进行赋值 if(type == TYPE_ONE){ holder0.tv0.setText(list.get(i).getTitle()); }else{ holder1.tv1.setText(list.get(i).getTitle()); } return view; } } public static class ViewHolder0{ TextView tv0; } public static class ViewHolder1{ TextView tv1; ImageView iv1; } public void initData(){ list=new ArrayList<News>(); for (int i=0;i<100;i++){ News n; if (i%7==5){ n=new News(10002,"广告"+i); }else{ n=new News(10001,"正文标题"+i); } list.add(n); } }}
package test.lilin.com.xlistduo;/** * Created by せしおゆ on 2017/8/24. */public class News { int type; //10001:显示新闻 10002:显示广告 20001 20002 String title; public int getType() { return type; } public void setType(int type) { this.type = type; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public News(int type, String title) { super(); this.type = type; this.title = title; } @Override public String toString() { return "News{" + "type=" + type + ", title='" + title + '\'' + '}'; }}
阅读全文
0 0
- ListView多条目加载
- ListView 多条目加载
- listview多条目加载
- ListView多条目加载
- listview多条目加载
- 多条目加载
- ListView多条目加载
- ListView多条目加载
- ListView多条目加载
- xlistview多条目加载
- android多条目加载
- ListView多条目加载
- listview多条目加载
- 多条目加载
- Listview多条目加载
- ListView多条目加载
- 多条目加载
- 多条目加载
- 【redis】AOF 持久化
- 如何在Apache中开启虚拟主机
- SSH整合实例
- 随机模拟的基本思想和常用采样方法(sampling)
- 过滤器、监听器、拦截器的区别
- 多条目加载
- Simple Strings CodeForces
- NSData NSString格式相互转换
- 安卓四大组件之activity笔记
- 用Python调度数据在Mysql及Hive间进行计算2例
- python数据分析
- three.js加载obj模型
- python with语句
- 一行代码实现Okhttp,Retrofit,Glide下载上传进度监听