博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android之listview分页加载上拉刷新、更新listview
阅读量:4290 次
发布时间:2019-05-27

本文共 8973 字,大约阅读时间需要 29 分钟。

==========系统方法实现上啦刷新=========

public class GreatToolsActivity extends Activity {    private TextView tv;    private ListView listtest;    private LinearLayout lt;    private TestSmsSafeAdapt adp;    private ArrayList
oneStr; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_greatetools); TextView tv = findViewById(R.id.tv_guishudi); tv.setClickable(true); //手机号码归属地的textView的点击事件 tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(GreatToolsActivity.this, NuberAdressActivty.class); startActivity(intent); } }); //********************listview分批加载数据测试****************** oneStr = new ArrayList
();//更新的数据 for (int m=0;m<5;m++){ oneStr.add(m+""); } lt = findViewById(R.id.nowLoading); listtest = findViewById(R.id.listtest); loadingListview();//加载数据 //给listview注册滚动事件的监听器 listtest.setOnScrollListener(new AbsListView.OnScrollListener() { //当滚动的状态发生变化的时候 @Override public void onScrollStateChanged(AbsListView absListView, int i) { switch (i) { case AbsListView.OnScrollListener.SCROLL_STATE_IDLE: Log.e("scroll", "空闲状态"); //判断当前listview的位置 int lastposition = listtest.getLastVisiblePosition();//获取最后一个可见条目在所有数据集合中的位置 Log.e("scroll", "空闲状态"+lastposition); if (lastposition == oneStr.size() - 1) { //列表被移动到最后的位置,加载更过数据 for (int n = 0; n < 2; n++) { if(oneStr.size()+n<100) { oneStr.add((oneStr.size() + 1)+""); } } loadingListview();//刷新listview } break; case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL: Log.e("scroll", "手指触摸状态"); break; case AbsListView.OnScrollListener.SCROLL_STATE_FLING: Log.e("scroll", "惯性滑行状态"); break; } } // 滚动的时候 @Override public void onScroll(AbsListView absListView, int i, int i1, int i2) { } }); } //********加载数据 private void loadingListview() { lt.setVisibility(View.VISIBLE);//设置转圈的布局可见 if (adp == null) { adp = new TestSmsSafeAdapt(); } lt.setVisibility(View.INVISIBLE);//设置转圈的布局不可见 listtest.setAdapter(adp); } private class TestSmsSafeAdapt extends BaseAdapter { @Override public int getCount() { return oneStr.size(); } @Override public Object getItem(int i) { return null; } @Override public long getItemId(int i) { return 0; } //有多少个条目,这个方法就会被调用多少次 @Override public View getView(final int i, View view, ViewGroup viewGroup) { final View v; if (view != null) { v = view; } else { v = View.inflate(getApplicationContext(), R.layout.listtestitem, null); tv = (TextView) v.findViewById(R.id.list_testitemtv); } tv.setText(oneStr.get(i)); return v; } }}

============更新listView的数据==========

public class CallSmsSafeActivty extends Activity {    private TextView tv_blackname;    private ListView lst_blackname;    private List
infos; private BlacknameDao dao; private CallSmsSafeAdapt adp; private Button adblackBtn; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.callsmssafe_activity); tv_blackname = findViewById(R.id.tv_blackname); lst_blackname = findViewById(R.id.lst_blackname); dao = new BlacknameDao(this); infos = dao.findAll(); adp = new CallSmsSafeAdapt(); lst_blackname.setAdapter(adp); adblackBtn =(Button)findViewById(R.id.addblacknameBtn); adblackBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { addblacknameClick(view);//点击天加按钮 } }); } private class CallSmsSafeAdapt extends BaseAdapter { private viewHolder holder; @Override public int getCount() { return infos.size(); } @Override public Object getItem(int i) { return null; } @Override public long getItemId(int i) { return 0; } //有多少个条目,这个方法就会被调用多少次 @Override public View getView(final int i, View view, ViewGroup viewGroup) { final View v; if (view != null) { v = view; holder = (viewHolder) v.getTag(); } else { v = View.inflate(getApplicationContext(), R.layout.list_callblackname_item, null); holder = new viewHolder(); holder.tv = (TextView) v.findViewById(R.id.list_blackname_item); v.setTag(holder); } holder.tv.setText(infos.get(i).getNumber()); AlertDialog.Builder bu=new AlertDialog.Builder(CallSmsSafeActivty.this);//注意这里不能用getApplicationContext(),对话框只能用this,this代表当前的activity; bu.setTitle("警告"); bu.setMessage("确定给取消"); bu.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //删除 holder.image=v.findViewById(R.id.image_blackname_item); holder.image.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {//删除数据 dao.delete(infos.get(i).getNumber());//通知适配器更新listview adp.notifyDataSetChanged(); } }); } }); bu.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); bu.show(); return v; } } //记事本存储textview的内存地址 class viewHolder { private TextView tv; private ImageView image; } private EditText enterbalckname; private Button cancelBtn; private Button sureBtn; //添加黑名单按钮,弹出dialog public void addblacknameClick(View view) { Log.e("addblack","d"); AlertDialog.Builder builder = new AlertDialog.Builder(this); final AlertDialog dialog = builder.create(); View contentview = View.inflate(this, R.layout.dialog_enterblackname, null); dialog.setView(contentview, 0, 0, 0, 0); dialog.show();// enterbalckname = findViewById(R.id.et_enterblackname); cancelBtn = findViewById(R.id.enterBlacknamecancelclick); sureBtn = findViewById(R.id.enterBlacknamesureclick); sureBtn.setOnClickListener(new View.OnClickListener() { @SuppressLint("WrongConstant") @Override public void onClick(View view) { String blackname = enterbalckname.getText().toString().trim(); if (TextUtils.isEmpty(blackname)) { // 电话不能为空 Toast.makeText(getApplicationContext(), "号码不能为空", 1); return; }//吧数据加到数据库 dao.add(blackname);//更新listView BlackNumberInfo info=new BlackNumberInfo(); info.setNumber(blackname); infos.add(info); //通知listview数据适配器更新 adp.notifyDataSetChanged(); dialog.dismiss(); } }); cancelBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialog.dismiss(); } }); }}

listview.setDevice(null);//分割线设置为null

listview.setverticalscrollbarEnabled(false);//设置垂直方向不能滚动;

item和button点击事件冲突的解决:

android:descendantFocusability="blocksDescendants"

如果ListView的item中包含了button等同样需要点击事件监听的控件时,系统在默认情况下使item中的事件监听的控件获取焦点,使ListView失去焦点,导致无法响应setOnItemClickListener()方法。

        那么添加的这个属性是什么意思呢?

descendantFocusability属性是当一个view获取焦点时,定义viewGroup和其子控件之间的关系。该属性的值有三种:

beforeDescendants:viewGroup会优先其子控件而获取到焦点。

afterDescendants:viewGroup只有当子类控件不需要获取焦点时才获取焦点。

blocksDescendants:viewGroup会覆盖子类控件而直接获取焦点。

转载地址:http://htmgi.baihongyu.com/

你可能感兴趣的文章
基于OpenRestry部署nginx+lua实现流量定向分发
查看>>
netty源码分析之-服务端启动核心源码分析(5)
查看>>
Storm并行度和流分组详解
查看>>
缓存数据预热详解
查看>>
热点数据降级详解(storm+nginx+lua)
查看>>
加载更多功能实现
查看>>
React相关Dom约束性和非约束性操作
查看>>
Hystrix高可用架构介绍
查看>>
netty源码分析之-SimpleChannelInboundHandler与ChannelInboundHandlerAdapter详解(6)
查看>>
netty源码分析之-开发过程中重要事项分析(7)
查看>>
Sublime Text3插件详解
查看>>
netty源码分析之-ByteBuf详解(8)
查看>>
javascript函数定义三种方式详解
查看>>
javascript中this关键字详解
查看>>
javascript关于call与apply方法详解
查看>>
netty源码分析之-ReferenceCounted详解(9)
查看>>
javascript闭包详解
查看>>
javascript类的创建与实例对象
查看>>
javascript原型详解(1)
查看>>
netty源码分析之-处理器详解(9)
查看>>