我的自定义列表视图非常慢,几乎无法使用,我一直在阅读很多帖子,但没有人帮我修复它,我希望你们中的一个能够,谢谢。
这是我的项目listview xml
<dependency>
<groupId>eu.europa.ec.joinup.sd-dss</groupId>
<artifactId>dss-token</artifactId>
<version>4.6.RC1</version>
</dependency>
<dependency>
<groupId>eu.europa.ec.joinup.sd-dss</groupId>
<artifactId>dss-pades</artifactId>
<version>4.6.RC1</version>
</dependency>
<dependency>
<groupId>eu.europa.ec.joinup.sd-dss</groupId>
<artifactId>dss-cades</artifactId>
<version>4.6.RC1</version>
</dependency>
<dependency>
<groupId>eu.europa.ec.joinup.sd-dss</groupId>
<artifactId>dss-document</artifactId>
<version>4.6.RC1</version>
</dependency>
这是适配器
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:layout_width="match_parent"
android:layout_height="300px"
android:id="@id/iv_tipo"
android:scaleType="centerCrop"
android:layout_marginLeft="5px"
android:layout_marginRight="5px"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/material_blue_grey_800"
android:textColor="#ffffff"
android:textAlignment="center"
android:textSize="27px"
android:paddingLeft="10px"
android:id="@id/tv_titulo"
android:paddingTop="10px"
android:paddingBottom="20px"
android:paddingRight="5px"
android:layout_marginLeft="5px"
android:layout_marginRight="5px"/>
</LinearLayout>
编辑:我修改了我的适配器@KishanSoni建议我,但它仍然很慢。
答案 0 :(得分:0)
使用Base Adapter而不是Array Adapter 还使用Holder Pattern, 例如我给你的样品
public class MyAdpt extends BaseAdapter {
private LayoutInflater mInflater;
public ArrayList<String> mdata;
public MyAdpt (ArrayList<String> data) {
mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mdata = data;
}
@Override
public int getCount() {
return mdata.size();
}
@Override
public Object getItem(int position) {
return mdata.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ItemViewHolder itemHolder;
if (convertView == null) {
itemHolder = new ItemViewHolder();
convertView = mInflater.inflate(R.layout.row_layout, null);
itemHolder.textview= (TextView) convertView.findViewById(R.id.textview);
convertView.setTag(itemHolder);
} else {
itemHolder = (ItemViewHolder) convertView.getTag();
}
itemHolder.textview.setText(mdata.get(position));
return convertView;
}
public class ItemViewHolder {
TextView textview;
}
}
编辑:
public class TrucoListAdapter extends BaseAdapter {
ArrayList<Truco> trucos;
public TrucoListAdapter(Context context, ArrayList<Truco> trucos) {
super(context, 0, trucos);
trucos = this.trucos;
}
@Override
public int getCount() {
return trucos.size();
}
@Override
public Object getItem(int position) {
return trucos.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ItemViewHolder itemHolder;
if (convertView == null) {
itemHolder = new ItemViewHolder();
LayoutInflater inflater = (LayoutInflater) parent.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.truco_list_item, null);
itemHolder.ImageView ivTipo = (ImageView) convertView.findViewById(R.id.iv_tipo);
itemHolder.TextView tvTitulo = (TextView) convertView.findViewById(R.id.tv_titulo);
convertView.setTag(itemHolder);
} else {
itemHolder = (ItemViewHolder) convertView.getTag();
}
Truco truco = (Truco) getItem(position);
switch (truco.getTipo()) {
case "m":
ivTipo.setImageResource(R.drawable.coins);
break;
case "c":
ivTipo.setImageResource(R.drawable.cards);
break;
case "a":
ivTipo.setImageResource(R.drawable.guess);
break;
case "d":
ivTipo.setImageResource(R.drawable.desa);
break;
default:
ivTipo.setImageResource(R.drawable.home);
return convertView;
}
public class ItemViewHolder {
ImageView ivTipo;
TextView tvTitulo;
}
}
答案 1 :(得分:0)
一些问题 -
Truco类:getTito()和getTitulo() - 他们做了任何昂贵的处理吗?
drawables是否小(图标大小)? IE,你在处理200K drawables吗?
你加载到arraylist中有多少个trucos?
很抱歉,由于代表不足,我无法将其添加为评论。