android - 具有动态布局数据的 ListView 中的内存使用情况

标签 android android-layout android-listview android-inflate android-memory

我正在开发一个自定义 ListView,每行都有嵌套数据。我想显示一个人的姓名,每行都有一个复选框,然后动态地将子行添加到 ListView 中,以获取与该人关联的一对多电话号码。

目前正在运行。然而,对于较大的数据集,我发现由于大量的内存使用而导致速度减慢和崩溃。有没有更好的方法来完成我想做的事情?

这是我想要看到的示例:

[] Joe Smith
  [] 1-555-444-3333
  [] 1-555-777-6655
  [] 1-555-234-3232
[] John Doe
  [] 1-555-882-3434
[] Someone Else
  [] 1-555-949-0304
  [] 1-555-392-4433

这是我当前在 ArrayAdapter 的 getView() 函数中使用的代码。我尝试清理它一些,所以如果有任何编译错误,它们可能是我清理时的拼写错误。

public View getView(int position, View convertView, ViewGroup parent)
{
View vi=convertView;
ViewHolder holder;

CustomContactInfo custom_contact = getItem(position);

if(convertView==null){
    inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    vi = inflater.inflate(R.layout.name_line, null);
    holder=new ViewHolder();

    holder.contact_name=(TextView)vi.findViewById(R.id.contact_name);
    holder.cb_selected=(CheckBox)vi.findViewById(R.id.contact_check);
    holder.phone_numbers=(LinearLayout)vi.findViewById(R.id.phone_number_container);                

    vi.setTag(holder);
} else {            
    holder=(ViewHolder)vi.getTag();
}

// Set the name of the contact on the main line
holder.contact_name.setText(custom_contact.name);

// Add the custom views for each phone number
holder.phone_numbers.removeAllViews();
for (Phone p : custom_contact.phones) 
{
    View v = this.inflater.inflate(R.layout.phone_number, null);

    CheckBox cb = (CheckBox)v.findViewById(R.id.phone_check);
    TextView number = (TextView)v.findViewById(R.id.phone_number);

    number.setText(p.phone_num);

    holder.phone_numbers.addView(v);
}

return vi;

}

最佳答案

我认为您想查看 ExpandableListView .

关于android - 具有动态布局数据的 ListView 中的内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12575746/

相关文章:

java - Android ListView 不显示任何内容

java - Android Google Play 抽屉导航样式

android - 根据BuildType选择 flavor

android - 跨设备工作的媒体断点

Android 设置 ListView 项目在有 ImageButton 时可点击

android - ImageView 图像未在 Eclipse + Android 上显示

android - 多个联系人选择器列表

java - RxJava newbee 线程顺序执行中的问题

java - 如何实现,只有双击 Android 手机中给出的三个按钮中的任何一个才能退出应用程序?

android - ScrollView 不在Android Bottom Sheet 中滚动