ListView动态加载

原创 2018年04月16日 18:22:07

1.Activity代码:


private ListView mListView; private int mPageIndex = 1; private MyAdapter myAdapter; private ListmList = new ArrayList<>();

private View mFootView;

private Button mLoadMore;

private ProgressBar mPro;

private int mLastIndex;

private SwipeRefreshLayout mSwipe;

private Handler mHandler = new Handler() {

@Override

public void handleMessage(Message msg) {

String jsonStr = (String) msg.obj;

Gson gson = new Gson();

//反射???

MyData myData = gson.fromJson(jsonStr, MyData.class);

//给集合赋值

mList.addAll(myData.getParamz().getFeeds());

myAdapter.notifyDataSetChanged();

mSwipe.setRefreshing(false);

}

};

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initFootView();

initView();

getInfo();

}

private void initView() {

mSwipe = (SwipeRefreshLayout) findViewById(R.id.SwipeRefresh);

mListView = (ListView) findViewById(R.id.lv);

mListView.addFooterView(mFootView);

mListView.setOnScrollListener(this);

myAdapter = new MyAdapter(mList, this);

mListView.setAdapter(myAdapter);

}

//初始化底部视图

private void initFootView() {

mFootView = getLayoutInflater().inflate(R.layout.layout, null);

mLoadMore = (Button) mFootView.findViewById(R.id.Load_More_Btn);

mPro = (ProgressBar) mFootView.findViewById(R.id.progressBar2);

mLoadMore.setOnClickListener(this);

}

private void getInfo() {

new Thread(new Runnable() {

@Override

public void run() {

try {

String s = MyOkHttp.getMyOkHttp().sendGet("http://litchiapi.jstv.com/api/GetFeeds?column=3&PageSize=10&pageIndex=" + mPageIndex + "&val=100511D3BE5301280E0992C73A9DEC41");

Message msg = new Message();

msg.obj = s;

mHandler.sendMessage(msg);

} catch (IOException e) {

e.printStackTrace();

}

}

}).start();

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.Load_More_Btn:

mPro.setVisibility(View.VISIBLE);

mLoadMore.setVisibility(View.GONE);

mPageIndex++;

getInfo();

break;

}

}

//滑动状态监听

@Override

public void onScrollStateChanged(AbsListView view, int scrollState) {

if (scrollState == 0 && myAdapter.getCount() == mLastIndex) {

mPro.setVisibility(View.GONE);

mLoadMore.setVisibility(View.VISIBLE);

}

}

//滑动时走的方法

@Override

public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

mLastIndex = totalItemCount - 1;

}

}

2.Adapter(适配器)

public class MyAdapter extends BaseAdapter {

private ListmList;

private Context mContext;

public MyAdapter(ListmList, Context mContext) {

this.mList = mList;

this.mContext = mContext;

}

@Override

public int getCount() {

return mList.size();

}

@Override

public Object getItem(int position) {

return null;

}

@Override

public long getItemId(int position) {

return 0;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

Holder holder = null;

if (convertView == null) {

holder = new Holder();

convertView = LayoutInflater.from(mContext).inflate(R.layout.list_item, null);

holder.mText = (TextView) convertView.findViewById(R.id.ListView_Text);

convertView.setTag(holder);

} else {

holder = (Holder) convertView.getTag();

}

holder.mText.setText(mList.get(position).getData().getSubject() + "");

return convertView;

}

class Holder {

private TextView mText;

}

}


2.Adapter(适配器)代码:

public class MyAdapter extends BaseAdapter {

private ListmList;

private Context mContext;

public MyAdapter(ListmList, Context mContext) {

this.mList = mList;

this.mContext = mContext;

}

@Override

public int getCount() {

return mList.size();

}

@Override

public Object getItem(int position) {

return null;

}

@Override

public long getItemId(int position) {

return 0;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

Holder holder = null;

if (convertView == null) {

holder = new Holder();

convertView = LayoutInflater.from(mContext).inflate(R.layout.list_item, null);

holder.mText = (TextView) convertView.findViewById(R.id.ListView_Text);

convertView.setTag(holder);

} else {

holder = (Holder) convertView.getTag();

}

holder.mText.setText(mList.get(position).getData().getSubject() + "");

return convertView;

}

class Holder {

private TextView mText;

}

}




Android ListView 中Adapter的使用及listView的动态加载

AdapterView及子类:
  • q838197181
  • q838197181
  • 2014年10月23日 20:20
  • 1237

Android Listview动态加载数据

首页   代码   文档   问答   资讯   经验   GitHub日报   登录   注册 www.open-open.com/libOPEN经验 ...
  • jixueson
  • jixueson
  • 2016年07月13日 11:00
  • 367

JQM 动态加载listview

jsp 代码 动态加载listview 实例 /mweb/sc/css/jquery.mobile-1.2.0.css" /> /mweb/sc/js/jquery.js"> /mwe...
  • linfen1680
  • linfen1680
  • 2013年01月22日 15:18
  • 1292

cocos2dx ListView 动态加载(代码)

http://www.cnblogs.com/dudu580231/p/4924192.html原文 cocos2dx ListView 动态加载(代码) 其实是根据上篇文...
  • u012071200
  • u012071200
  • 2016年03月10日 14:35
  • 1959

Listview中动态添加另外一种布局

listview在现有数据中动态添加另外一种布局,通过getViewType区分开position。根据返回的值,加载不同的布局,实现两种布局。注意getcout等于源数据集合中的总数加上插入的新数据...
  • yujiugang
  • yujiugang
  • 2016年06月16日 19:23
  • 4500

android 实现listview动态加载列表项

最近了一个动态加载listview类表项的列子,分享出来大家学习学习,我说说这个例子的实现过程,首先我限定每次加载的列表项数据为10条数据,当我拖动listview滚动到最后一条数据的时候再加载10条...
  • yaoyeyzq
  • yaoyeyzq
  • 2011年05月06日 11:24
  • 13158

【Jquery mobile】动态加载ListView

动态增加列表项是一个基本的功能,今天测试了一下。先贴下效果图: 点击“更多。。。”,就会增加列表项。 代码如下: Page Title ...
  • actual_
  • actual_
  • 2011年12月01日 09:04
  • 30168

安卓动态加载ListView

安卓动态加载ListView
  • magaohong
  • magaohong
  • 2017年08月24日 09:27
  • 87

用listview实现动态添加行

在adapter中添加 public void addListItem(FitEntry arrayList) { fitnessEntity.add(arrayList); } 在mai...
  • xiaoshuxgh
  • xiaoshuxgh
  • 2017年01月18日 17:31
  • 371

Android如何优雅地实现ListView加载更多功能(1)

利用ListView的分类型Item功能实现加载更多功能RecyclerView是Android5.0以后推出的新控件,相比于ListView可定制性更大,大有取代ListView之势。所以你可能会感...
  • xwwwan
  • xwwwan
  • 2017年05月23日 16:46
  • 314
收藏助手
不良信息举报
您举报文章:ListView动态加载
举报原因:
原因补充:

(最多只允许输入30个字)