只有三条数据,但是调用GetCount()方法多达650+以上的次数,不知道原因。是否与Layout XML文件相关
private class ListViewAdapter extends BaseAdapter
{
/* inflater */
private LayoutInflater mInflater; private ArrayList<AbsSiteInfo> sites; private ArrayList<LDAPSiteInfo> ldapSites; private ArrayList<AbsSiteInfo> selectedSites; private ArrayList<LDAPSiteInfo> selectedLDAPSites; private int count = 0; public ListViewAdapter()
{
HLog.i("AddrLocalView", "ListViewAdapter: ListViewAdapter");
mInflater = LayoutInflater.from(mContext);
sites = new ArrayList<AbsSiteInfo>();
ldapSites = new ArrayList<LDAPSiteInfo>();
selectedSites = new ArrayList<AbsSiteInfo>();
selectedLDAPSites = new ArrayList<LDAPSiteInfo>();
} @Override
public int getCount()
{
return count;
} public String getItemName(int postion)
{
HLog.i("AddrLocalView", "ListViewAdapter: getItemName");
if (postion >= sites.size())
{
return ldapSites.get(postion - sites.size()).getAbsSite().name;
}
else
{
return sites.get(postion).name;
} } public int getSelectedCount()
{
HLog.i("AddrLocalView", "ListViewAdapter: getSelectedCount");
return selectedLDAPSites.size() + selectedSites.size();
}
public ArrayList<AbsSiteInfo> getSites()
{
return sites;
} @Override
public long getItemId(int position)
{
HLog.i("AddrLocalView", "ListViewAdapter: getItemId");
return position;
}
/**
* 得到每行item ,一个view代表一行item
*/
public View getView(int position, View convertView, ViewGroup parent)
{
HLog.i("AddrLocalView", "ListViewAdapter: getView");
final Viewholder viewholder;
if (convertView == null)
{
convertView = mInflater.inflate(R.layout.address_list_style, null);
viewholder = new Viewholder(); // 取出控件对象
viewholder.lineLayout = (LinearLayout) convertView.findViewById(R.id.lineText);
viewholder.text = (TextView) convertView.findViewById(R.id.txtSname);
viewholder.no = (TextView) convertView.findViewById(R.id.no);
viewholder.onlineImage = (ImageView) convertView.findViewById(R.id.online_status_image);
viewholder.mtableLayout = (TableLayout) convertView.findViewById(R.id.childText);
viewholder.addrCheckbox = (CheckBox) convertView.findViewById(R.id.address_check);
viewholder.btnSave = (ImageButton) convertView.findViewById(R.id.ldap_item_save);
viewholder.btnExpand = (ImageView) convertView.findViewById(R.id.expand);
viewholder.ldap_image = (ImageView) convertView.findViewById(R.id.ldap_image); viewholder.addrCheckbox.setOnClickListener(new OnClickListenerHandle()
{
@Override
public void onNormalClick(View v)
{
CheckBox chkbtn = (CheckBox) v;
handlerCheckboxClick(chkbtn);
} }); convertView.setTag(viewholder);
}
else
{
viewholder = (Viewholder) convertView.getTag();
}
private class ListViewAdapter extends BaseAdapter
{
/* inflater */
private LayoutInflater mInflater; private ArrayList<AbsSiteInfo> sites; private ArrayList<LDAPSiteInfo> ldapSites; private ArrayList<AbsSiteInfo> selectedSites; private ArrayList<LDAPSiteInfo> selectedLDAPSites; private int count = 0; public ListViewAdapter()
{
HLog.i("AddrLocalView", "ListViewAdapter: ListViewAdapter");
mInflater = LayoutInflater.from(mContext);
sites = new ArrayList<AbsSiteInfo>();
ldapSites = new ArrayList<LDAPSiteInfo>();
selectedSites = new ArrayList<AbsSiteInfo>();
selectedLDAPSites = new ArrayList<LDAPSiteInfo>();
} @Override
public int getCount()
{
return count;
} public String getItemName(int postion)
{
HLog.i("AddrLocalView", "ListViewAdapter: getItemName");
if (postion >= sites.size())
{
return ldapSites.get(postion - sites.size()).getAbsSite().name;
}
else
{
return sites.get(postion).name;
} } public int getSelectedCount()
{
HLog.i("AddrLocalView", "ListViewAdapter: getSelectedCount");
return selectedLDAPSites.size() + selectedSites.size();
}
public ArrayList<AbsSiteInfo> getSites()
{
return sites;
} @Override
public long getItemId(int position)
{
HLog.i("AddrLocalView", "ListViewAdapter: getItemId");
return position;
}
/**
* 得到每行item ,一个view代表一行item
*/
public View getView(int position, View convertView, ViewGroup parent)
{
HLog.i("AddrLocalView", "ListViewAdapter: getView");
final Viewholder viewholder;
if (convertView == null)
{
convertView = mInflater.inflate(R.layout.address_list_style, null);
viewholder = new Viewholder(); // 取出控件对象
viewholder.lineLayout = (LinearLayout) convertView.findViewById(R.id.lineText);
viewholder.text = (TextView) convertView.findViewById(R.id.txtSname);
viewholder.no = (TextView) convertView.findViewById(R.id.no);
viewholder.onlineImage = (ImageView) convertView.findViewById(R.id.online_status_image);
viewholder.mtableLayout = (TableLayout) convertView.findViewById(R.id.childText);
viewholder.addrCheckbox = (CheckBox) convertView.findViewById(R.id.address_check);
viewholder.btnSave = (ImageButton) convertView.findViewById(R.id.ldap_item_save);
viewholder.btnExpand = (ImageView) convertView.findViewById(R.id.expand);
viewholder.ldap_image = (ImageView) convertView.findViewById(R.id.ldap_image); viewholder.addrCheckbox.setOnClickListener(new OnClickListenerHandle()
{
@Override
public void onNormalClick(View v)
{
CheckBox chkbtn = (CheckBox) v;
handlerCheckboxClick(chkbtn);
} }); convertView.setTag(viewholder);
}
else
{
viewholder = (Viewholder) convertView.getTag();
}
解决方案 »
- android wifi porting到平板UI时发生错误
- 熟悉android按键读取,分发的进!!!
- tabhost中的tab页的布局能不能单独放在一个xml文件中
- 准备学习NDK里面的OPEN GLES,大伙进来帮帮忙入门……
- android自制的软件如何添加到打开方式??
- 一个很诡异的问题
- android平台的通话加密软件能实现吗?怎么实现?
- 关于图像识别-Tesseract-OCR
- Android中Eclipse错误You must restart adb and Eclipse.
- Android studio 无法解析结果路径字符串
- android建立模拟器
- android 百度地图获取焦点
<?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">
<LinearLayout android:orientation="horizontal" android:id="@+id/sitetitleline"
android:gravity="center" android:layout_width="fill_parent"
android:layout_height="40dip">
<CheckBox android:id="@+id/address_check" android:button="@drawable/call_select_normal"
style="@style/check_box_style" />
<LinearLayout android:id="@+id/lineText"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:gravity="center_vertical">
<ImageView android:id="@+id/online_status_image"
android:layout_width="20dip" android:layout_height="wrap_content" />
<ImageView android:id="@+id/ldap_image" android:src="@drawable/call_site_station_ldap"
android:layout_width="20dip" android:layout_height="wrap_content"
android:layout_marginLeft="5dip" android:visibility="invisible" />
<TextView android:id="@+id/txtSname" android:layout_width="120dip"
android:layout_marginLeft="5dip" android:singleLine="true"
android:ellipsize="end" android:textColor="#000000"
android:layout_height="wrap_content" style="@style/itemSiteNumberStyle" />
<TextView android:id="@+id/no" android:layout_width="120dip"
android:singleLine="true" android:ellipsize="end" android:textColor="#000000"
android:layout_marginLeft="25dip" android:layout_height="wrap_content"
style="@style/itemSiteNumberStyle" />
<ImageButton android:id="@+id/ldap_item_save"
android:background="@drawable/call_save_btn_normal" android:src="@drawable/call_save_icon"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="50dip" />
<ImageView android:id="@+id/expand" android:src="@drawable/call_site_information"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="15dip" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
给LZ一个链接哈,可以参考一下,就知道啦~~
/**
* 设置数据源
* @param sites
* @param ldapSites
*/
public void setData(ArrayList<AbsSiteInfo> sites, ArrayList<LDAPSiteInfo> ldapSites)
{
this.sites = sites;
this.ldapSites.clear();
if (null != ldapSites)
{
this.ldapSites = ldapSites;
}
count = this.sites.size() + this.ldapSites.size();
}
现在的问题是数据可以显示出来,但是调用Getcount次数过多,导致在Android的模拟器上显示有些慢。