您的位置:首页 > 移动开发 > Android开发

学习小结

2015-08-18 19:41 344 查看
1 ViewPager在回退时原有内容清空:

holder.heyue.setText(dataList.get(position).get("heyue").toString());

return convertView;
}

@Override
public long getItemId(int position) {
return 0;
}

@Override
public Object getItem(int position) {
return dataList.get(position);
}

@Override
public int getCount() {
//Log.v("!!!", String.valueOf(getData().size()));
return dataList.size();
}

class ViewHolder {
public TextView heyue;
}


动态刷新ListView数据时,例如每秒刷新:

先要清空数据源里面的内容,如dataList.clear(),第一次加载数据,使用适配器

adapter = new MyAdapter(this, dataList);

listView.setAdapter(a
4000
dapter);

如果不是第一次加载,就使用notifySetDataChanged();笔者给出在做项目时使用的示例代码

adapter = new MyAdapter(getActivity(), dataList);
   
    lvContent.post(new Runnable() {

@Override
public void run() {
BaseAdapter a = (BaseAdapter) lvContent.getAdapter();
if(a == null) lvContent.setAdapter(adapter);
else{
((MyAdapter)(a)).dataList = dataList;
a.notifyDataSetChanged();
}
}
});

ps:如果事先不清空,每次刷新后都会回到顶部

3.子线程更新UI的问题

除了可以使用handler,runonuiThread等方法外,使用

view.post(new Runnable(){

public void run(){

}

});

就显得简单一些;

4.Fragment的ViewPager的预加载问题:

重写setUserVisibleHint

<span style="white-space:pre">		</span>public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
Log.v("!!!", "resume");
}
}

5.double类型的加减乘除精度问题
在java中使用BigDecimal代替浮点数的计算,可以确定精度

6.alertDialog.Builder.setView(v)在二次点击后程序会闪退

在相应的监听里面重新获取一遍所使用的自定义v。

 

7.android访问网络时不能在主线程中

在相应的监听里面重新获取一遍所使用的自定义v。

<span style="white-space:pre"> </span>setContentView(R.layout.activity_main);

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads()
.detectDiskWrites().detectNetwork().penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android java