只有三条数据,但是调用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();
}
解决方案 »
- 启动应用程序的问题[貌似跟task有关]
- android mac下 usb 调试
- StringBuffer java.lang.OutOfMemoryError
- 如何让安卓平板和台式电脑通过wifi互发数据包
- Failed to install ActivityMain.apk on device 'emulator-5554
- 豌豆荚设置Android铃声的原理是什么?
- android引入jar包,运行工程报java.lang.NoClassDefFoundError。
- 介绍几款好点的反编译软件
- android 有没有更改默认字体颜色的功能?
- 模拟器无法启动
- 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的模拟器上显示有些慢。