1

スクロール ビューでプロパティ リストを表示していますが、nxn マトリックス ビューがあります。これには負荷の問題があります (メモリが不足し、読み込みに時間がかかります)。この問題を解決するためにいくつかの解決策を試しましたが、100% を達成できませんでした。

  1. 列のスクロール ビューをリストビューに変更して試しましたが、結果はすべてのリストビューの最後の列の値を示しています。問題は、アダプターのデータセットの変更がすべてのビューに影響を与えることです。この問題を解決するにはどうすればよいですか?
  2. そして、最も価値のある解決策は、スクロールビューに画像をロードして、それらを画面に表示し、表示の変更 (スクロール) で画像をロードできるようにすることです。これを達成する方法は?

画像読み込みもバックグラウンド処理(doinbackground)でやってみました。

4

2 に答える 2

0

このコードを試してください:

public class CustomBaseAdapter extends BaseAdapter {
    Context context;
    List<RowItem> rowItems;

public CustomBaseAdapter(Context context, List<RowItem> items) {
    this.context = context;
    this.rowItems = items;
}

/*private view holder class*/
private class ViewHolder {
    ImageView imageView;
    TextView txtTitle;
    TextView txtDesc;
}

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

    LayoutInflater mInflater = (LayoutInflater)
        context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.list_item, null);
        holder = new ViewHolder();
        holder.txtDesc = (TextView) convertView.findViewById(R.id.desc);
        holder.txtTitle = (TextView) convertView.findViewById(R.id.title);
        holder.imageView = (ImageView) convertView.findViewById(R.id.icon);
        convertView.setTag(holder);
    }
    else {
        holder = (ViewHolder) convertView.getTag();
    }

    RowItem rowItem = (RowItem) getItem(position);

    holder.txtDesc.setText(rowItem.getDesc());
    holder.txtTitle.setText(rowItem.getTitle());
    holder.imageView.setImageResource(rowItem.getImageId());

    return convertView;
}

@Override
public int getCount() {
    return rowItems.size();
}

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

@Override
public long getItemId(int position) {
    return rowItems.indexOf(getItem(position));
}

}

行項目クラスは次のとおりです。

public class RowItem {
    private int imageId;
    private String title;
    private String desc;


public RowItem(int imageId, String title, String desc) {
    this.imageId = imageId;
    this.title = title;
    this.desc = desc;
}
public int getImageId() {
    return imageId;
}
public void setImageId(int imageId) {
    this.imageId = imageId;
}
public String getDesc() {
    return desc;
}
public void setDesc(String desc) {
    this.desc = desc;
}
public String getTitle() {
    return title;
}
public void setTitle(String title) {
    this.title = title;
}
@Override
public String toString() {
    return title + "\n" + desc;
}

}

于 2013-08-21T06:16:58.633 に答える