数据加载卡屏 数据异步 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 像类似这样的全国城市,可以在APP启动就记载好记录在全局的对象中,其他窗口要用直接使用不用加载 不要在主线程加载 , 在 onCreate()方法 里面 开启一个加载线程, 慢慢加载, 页面弄个进度条之类的东西, 先跳过来 , 在子线程里面慢慢加载, 这样用户体验更好一些;注意 要在 onStop()方法中终止线程, 要不然 还没加载完 退出去 线程还在跑就哭了 就是全局类全部是静态属性随便在哪个窗口可以直接访问类似public static string city; class AddressLoadTask extends AsyncTask<String, Void, List>{ @Override protected List doInBackground(String... params) { arrayCitys = AddressActivity.this.getResources() .getStringArray(R.array.citys); for (int i = 0; i < 50; i++) { CityEntity city = new CityEntity(); city.setCityName(arrayCitys[i]); // 获取每个城市首字 String letter = util.getLetters(arrayCitys[i]); city.setLetter(letter); sourceList.add(city); } return sourceList; } @Override protected void onPostExecute(List result) { if(result==null){ return ; } Collections.sort(sourceList, comparator); adapter.notifyDataSetChanged(); super.onPostExecute(result); } } Adapter 代码public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { viewHolder = new ViewHolder(); convertView = LayoutInflater.from(mContext).inflate( R.layout.layout_address_list_item, null); viewHolder.setName((TextView) convertView .findViewById(R.id.tv_address_list_item_city)); viewHolder.setLetter((TextView) convertView .findViewById(R.id.tv_address_list_item_letter)); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } // 根据position获取分类的首字母的Char ascii值 int section = getSectionForPosition(position); // 如果当前位置等于该分类首字母的Char的位置 ,则认为是第一次出现 if (position == getPositionForSection(section)) { viewHolder.letter.setVisibility(View.VISIBLE); viewHolder.letter.setText(mCityList.get(position).getLetter()); } else { viewHolder.letter.setVisibility(View.GONE); } viewHolder.name.setText(mCityList.get(position).getCityName()); return convertView; } /** * 根据ListView的当前位置获取分类的首字母的Char ascii值 */ public int getSectionForPosition(int position) { return mCityList.get(position).getLetter().charAt(0); } /** * 根据分类的首字母的Char ascii值获取其第一次出现该首字母的位置 */ public int getPositionForSection(int section) { for (int i = 0; i < getCount(); i++) { String sortStr = mCityList.get(i).getLetter(); char firstChar = sortStr.toUpperCase().charAt(0); if (firstChar == section) { return i; } } return -1; } 求助啊!! 程序读取APK包中的XML文件 求Android手机号码吉凶查询、归属地查询源码 学习语音、视频编码技术 学习思路 关于google Map的问题求解!!! TextView异步加载图片,谁能帮忙写个缓存处理 急!!! 如何 TCP 同步发送数据 ???(或者说是 阻塞block模式 ) android 设置背景 求救 关于AppIntent那篇论文的一些问题 andorid thread使用sleep方法遇到的问题. android DroidParts框架使用 小白求助-百度地图api无法定位
protected List doInBackground(String... params) {
arrayCitys = AddressActivity.this.getResources()
.getStringArray(R.array.citys);
for (int i = 0; i < 50; i++) {
CityEntity city = new CityEntity();
city.setCityName(arrayCitys[i]);
// 获取每个城市首字
String letter = util.getLetters(arrayCitys[i]);
city.setLetter(letter);
sourceList.add(city);
}
return sourceList;
}
@Override
protected void onPostExecute(List result) {
if(result==null){
return ;
}
Collections.sort(sourceList, comparator);
adapter.notifyDataSetChanged();
super.onPostExecute(result);
}
}
public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) {
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(mContext).inflate(
R.layout.layout_address_list_item, null);
viewHolder.setName((TextView) convertView
.findViewById(R.id.tv_address_list_item_city));
viewHolder.setLetter((TextView) convertView
.findViewById(R.id.tv_address_list_item_letter));
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
} // 根据position获取分类的首字母的Char ascii值
int section = getSectionForPosition(position); // 如果当前位置等于该分类首字母的Char的位置 ,则认为是第一次出现
if (position == getPositionForSection(section)) {
viewHolder.letter.setVisibility(View.VISIBLE);
viewHolder.letter.setText(mCityList.get(position).getLetter());
} else {
viewHolder.letter.setVisibility(View.GONE);
} viewHolder.name.setText(mCityList.get(position).getCityName());
return convertView;
} /**
* 根据ListView的当前位置获取分类的首字母的Char ascii值
*/
public int getSectionForPosition(int position) {
return mCityList.get(position).getLetter().charAt(0);
}
/**
* 根据分类的首字母的Char ascii值获取其第一次出现该首字母的位置
*/
public int getPositionForSection(int section) {
for (int i = 0; i < getCount(); i++) {
String sortStr = mCityList.get(i).getLetter();
char firstChar = sortStr.toUpperCase().charAt(0);
if (firstChar == section) {
return i;
}
} return -1;
}