1

스크롤보기의 속성 목록에 nxn 행렬보기가 표시됩니다. 이것은로드 문제가 있습니다 (메모리가 부족하여로드하는 데 더 많은 시간이 걸림).이 문제를 해결하기 위해 몇 가지 해결책을 시도했지만 100 %를 달성하지 못했습니다.Android : 여러 열과 행 (nxn)이있는 이미지를 표시합니다. 메모리 문제가 있습니다

  1. 열 스크롤보기를 listview로 변경하고 시도했지만 결과에 모든 listview의 마지막 열 값이 표시됩니다. 나는 문제가 어댑터 datasetchange이 문제를 극복하는 방법을 모든보기에 영향을 줄 것을 알았지?
  2. 그리고 가장 가치있는 해결책은 이미지를 화면에 표시 할 수있는 스크롤보기에 이미지를로드하고 이미지를로드 할 수있는 가시 (스크롤링) 변경시에로드하는 것입니다. 이것을 달성하는 방법?

Plz 더 많은 시간을 이미 소비했기 때문에 도움이됩니다. 나는 백그라운드 프로세스 (뿐만 아니라 이미지 부하 doinbackground과 노력

+0

GridView : http://developer.android.com/reference/android/widget/GridView.html을 확인하십시오. 필요한 경우 이미지를로드합니다. – andy256

+0

gridview를 사용하려고 생각했지만 문제는 전체보기가 아닌 모든 단일 열을 스크롤하려고했습니다. –

답변

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; 
} 

}