首页 文章 精选 留言 我的

精选列表

搜索[数据脱敏],共10000篇文章
优秀的个人博客,低调大师

Android动态刷新listview中的数据

之前一直困扰listview刷新后位置的问题,现在才明白,原来不能重新设置listview的adapter,而应该用notifyDataSetChanged()来刷新,这样位置就不会置顶。 下面做了一个测试的例子,点击最后一条记录,会增加一条新的记录, 代码如下: 1.TestAdapter package com.TestAdapter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AbsListView.OnScrollListener; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.AbsListView; import android.widget.ImageView; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.Toast; public class TestAdapter extends Activity { /** Called when the activity is first created. */ private int[] images ; private ListView listview; private MyAdapter adapter; List<Map<String,Integer>> al; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); images = new int[]{android.R.drawable.ic_btn_speak_now, android.R.drawable.alert_light_frame, android.R.drawable.arrow_down_float, android.R.drawable.arrow_up_float, android.R.drawable.btn_star_big_off, android.R.drawable.btn_star_big_on, android.R.drawable.button_onoff_indicator_off, android.R.drawable.button_onoff_indicator_on, android.R.drawable.checkbox_off_background, android.R.drawable.checkbox_on_background, android.R.drawable.ic_btn_speak_now, android.R.drawable.ic_delete}; listview = (ListView)findViewById(R.id.listview); al = new ArrayList<Map<String,Integer>>(); for(int i=0; i<12; i++){ HashMap<String,Integer > map = new HashMap<String,Integer>(); map.put(""+i, images[i]); al.add(map); } adapter = new MyAdapter(this, al, R.layout.list_item, new String[]{"imageview", "tv"}, new int[]{R.id.imageview, R.id.tv}); listview.setAdapter(adapter); listview.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int count, long arg3) { if(adapter.getCount()==count+1){ HashMap<String ,Integer> map = new HashMap<String, Integer>(); map.put(""+(adapter.mItemList.size()), android.R.drawable.ic_dialog_email); al.add(map); adapter.mItemList = al; adapter.notifyDataSetChanged(); Toast.makeText(TestAdapter.this, "正在刷新", Toast.LENGTH_SHORT).show(); } } }); } private class MyAdapter extends SimpleAdapter{ int count = 0; private List<Map<String, Integer>> mItemList; public MyAdapter(Context context, List<? extends Map<String, Integer>> data, int resource, String[] from, int[] to) { super(context, data, resource, from, to); mItemList = (List<Map<String, Integer>>) data; if(data == null){ count = 0; }else{ count = data.size(); } } public int getCount() { return mItemList.size(); } public Object getItem(int pos) { return pos; } public long getItemId(int pos) { return pos; } @Override public View getView(int position, View convertView, ViewGroup parent) { Map<String ,Integer> map = mItemList.get(position); int image = map.get(""+position); View view = super.getView(position, convertView, parent); ImageView imageview = (ImageView)view.findViewById(R.id.imageview); TextView tv = (TextView)view.findViewById(R.id.tv); imageview.setBackgroundResource(image); tv.setText(""+position); return view; } } } 2.main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ListView android:id="@+id/listview" android:layout_width="fill_parent" android:layout_height="wrap_content" ></ListView> </LinearLayout> 3.list_item.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:id="@+id/imageview" android:layout_width="wrap_content" android:layout_height="wrap_content"> </ImageView> <TextView android:id="@+id/tv" android:layout_width="fill_parent" android:layout_height="wrap_content" ></TextView> </LinearLayout> 本文转自 wws5201985 51CTO博客,原文链接:http://blog.51cto.com/wws5201985/786470,如需转载请自行联系原作者

优秀的个人博客,低调大师

SpringBoot+Redis实现Session数据共享

1.需求在传统的Web小规模并发的情况下,单个Tomcat容器往往就能胜任请求的负载与处理,如图1所示的方案一。方案一的好处在于,部署简单,维护方便,在Web服务发生变更之后,能够快速升级;除此之外,在用户Session管理方面也十分简单:将所有Session存储至本地服务器即可。但是该方案存在并发规模小、单点故障等原因。 图1 单节点Tomcat示意图 针对方案一存在的负载小、单点故障等因素,方案二进行了大规模的改进。首先,使用NGINX+keepalived取代原来的单节点Tomcat,同时以NGINX作为反向代理服务器,管理多个Tomcat服务节点。如图2所示。 图2 多节点Tomcat部署示意图 从图2可以看出,单节点部署的用户请求负载,从单个Tomcat服务器转移到了Nginx负载(还有其他负载均衡方式)下的多个Tomcat节点,从而实现了单个Web服务的负载均衡与备份。而各个Tomcat节点与NGINX之间,则是采用反向代理的形式进行通信,具体方法有以下五种:**1、轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 upstream backserver { server 192.168.0.14; server 192.168.0.15; } ** **2、指定权重指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 upstream backserver { server 192.168.0.14 weight=10; server 192.168.0.15 weight=10; } ** **3、IP绑定 ip_hash每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 upstream backserver { ip_hash; server 192.168.0.14:88; server 192.168.0.15:80; } ****4、fair(第三方)按后端服务器的响应时间来分配请求,响应时间短的优先分配。 upstream backserver { server server1; server server2; fair; } ** **5、url_hash(第三方)按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。 upstream backserver { server squid1:3128; server squid2:3128; hash $request_uri; hash_method crc32; } ** 具体NGINX+Keepalived+Tomcat的负载均衡搭建请参考我的另一篇博客。2.带来的问题

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册