마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

getview not called help !

0 추천
부르는 부분
GridView gv;
gv = (GridView) myView.findViewById(R.id.list_profile);
profileAdapter = new ProfileAdapter(MypageProfile.this, R.id.list_profile, list);
gv.setAdapter(profileAdapter);
 
받는 부분 
public Map<Integer, BoardData> dataMap = Collections.synchronizedMap(new HashMap<Integer, BoardData>());
HttpProxy proxy = new HttpProxy();
private String imagePath = proxy.getBaseUrl();
private boolean zero = false;
private int zeroCount = 0;
private Handler handler = new Handler();
ArrayList<BoardDTO> items;
Intent intent;
Activity activity;
 
public ProfileAdapter(Context context, int textViewResourceId, ArrayList<BoardDTO> items) {
        super(context, textViewResourceId, items);
       this.items = items;
        activity = (Activity) context;
        //data clear
        dataMap.clear();
}
 
@Override
    public View getView(int position, View convertView, ViewGroup parent) {
boolean duplicate = true;
View v = convertView;
final ViewHolder holder;
final BoardData boardData;
 
  if (v == null) {
            LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = vi.inflate(R.layout.board_item, null);
}
 
    if(dataMap.get(position) == null){
    boardData = new BoardData();
    zero = false;
    }else{
    boardData = dataMap.get(position);
    zero = true;
    }
   
holder = createViewHolder(v);
   
if(position!=0){
clear(holder);
if(dataMap.get(position) == null){
    duplicate = true;
    }else{
        storeDataSetting(holder,boardData);
        state(holder, boardData);
        duplicate = false;
    }
}else{
if(zeroCount>6){
if(zero){
Logger.debug("6");
    clear(holder);
            storeDataSetting(holder,boardData);
            state(holder, boardData);
            zero = false;
            duplicate = false;
    }
}else{
zeroCount++;
}
}
   
   
    if(duplicate){
    Logger.debug("8");
       final BoardDTO p = getItem(position);
       if (p != null) {
        Logger.debug("9");
        holder.eventLl.setTag(position+"");
        holder.profileMv.setTag(position+"");
       
        boardData.setArticlSeq(p.getArticlSeq());        
        holder.articlSeq.setText(boardData.getArticlSeq());
       
    AsyncTaskHandler<Bitmap> profileTask = new AsyncTaskHandler<Bitmap>(handler) {
    @Override
    public void preTask() throws Throwable{
    Bitmap bm = Utility.downloadImage(imagePath+p.getProfilePath()+SMALL_IMG);
    setTaskResult(bm);
    }
   
 
 
캐릭 (420 포인트) 님이 2015년 6월 12일 질문
캐릭님이 2015년 6월 12일 수정

1개의 답변

+1 추천

안녕하세요~

제공해주신 정보가 적어서... 이게 맞을지 모르지만 ...

밑에코드 한번 확인해보세요.. 

저 두 군데에 return 0; 으로 되어있지는 않은지... 

@Override
    public int getCount() {
        // TODO Auto-generated method stub
        return mData.length;
    }
 
    @Override
    public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return mData[arg0];
    }
dubudub (930 포인트) 님이 2015년 6월 12일 답변
mData 라 함은 제가 준 데이터 길이 말하는 거죠 ?
네~ 뭔가 data로 받아주신게 있으실테니 ... items 를 받아서 그 길이를 한 번 시도해보시는건 어떨까요??

public CustomAdapter(Activity context, int textViewResourceId, ArrayList<BoardDTO> items) { ...}

http://stackoverflow.com/questions/12038660/list-view-adapter-not-working-getview-not-called
이거 한 번 보시고 같은 케이스인지 확인해 보셔요
캐릭 이분껀 그냥 답안해주는게 좋다고 생각됩니다.
항상 자기 위주의 질문과 댓글,답글 다는 사람들의 글은 필요하지 않으면 들은 척도 안하기 때문에, 굳이 도움을 줄 필요가 없다고 생각됩니다.
data를 arrayList 를 받아서 처리를 하는데 요. ㅠㅠ.

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

getCount는 size로 바꾸면 될거 같은데 아래 getitemid 는 어떻게 처리해야할지 막막합니다.
 
    @Override
    public long getItemId(int arg0) {
        return items.get(arg0).get....;
    }
그리구 위에 CustomAdapter 를 탔는데 아래 getView를 아예 타지도 들어오지도 않는 문제인데요... getCount랑 getItemId를 아예 안쓰는데 상관이 있을까요 ... ?
1. http://android.amberfog.com/?p=296
http://lueseypid.tistory.com/14   참고하셔서 연구해보세요~~
2. setAdapter 하셨는지 확인 해보세요.
3. 데이터사이즈가 제대로 찍히는지도 다시한번 확인해보세요. (getCount 함수 내에서도요)

주어진 정보가 제한적이라 ... 흠...
위에 이어서 다시 붙입니다. 확인 부탁드려요 ... 8000자 이상은 안되서 중요한 부분만 넣었습니다 ..ㅠ..
    boardData.setNcnm(p.getNcnm());
holder.ncnm.setText(boardData.getNcnm());

boardData.setDate(dateSetting(p.getInstDe()));
holder.date.setText(dateSetting(p.getInstDe()));

String extsn = p.getFileExtsn();

if(!extsn.equals("null")){
        new Thread(new Runnable() {
    @Override
    protected void postTask() {
           if(hasError()){
            holder.progressBar.setVisibility(View.GONE);
               holder.imgContent.setBackgroundResource(R.drawable.image_not_found);
               boardData.setState(BoardData.FILE_NOT_FOUND);
               return;
           }
           Bitmap bm = getTaskResult();
    holder.imgContent.setImageBitmap(bm);
    boardData.setImgContent(bm);
    holder.progressBar.setVisibility(View.GONE);
    }
    };
        return v;
    }


public Map<Integer, BoardData> dataMap = Collections.synchronizedMap(new HashMap<Integer, BoardData>());
HttpProxy proxy = new HttpProxy();
private String imagePath = proxy.getBaseUrl();
private boolean zero = false;
private int zeroCount = 0;
private Handler handler = new Handler();
ArrayList<BoardDTO> items;
Intent intent;
Activity activity;
public ProfileAdapter(Context context, int textViewResourceId, ArrayList<BoardDTO> items) {
        super(context, textViewResourceId, items);
       this.items = items;
        activity = (Activity) context;
        //data clear
        dataMap.clear();
}
@Override
    public View getView(int position, View convertView, ViewGroup parent) {
boolean duplicate = true;
View v = convertView;
final ViewHolder holder;
final BoardData boardData;
// overDataClear(position);
  if (v == null) {
            LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = vi.inflate(R.layout.board_item, null);
}
    if(dataMap.get(position) == null){
    boardData = new BoardData();
    zero = false;
    }else{
    boardData = dataMap.get(position);
    zero = true;
    }
   
holder = createViewHolder(v);
   
if(position!=0){
clear(holder);
if(dataMap.get(position) == null){
    duplicate = true;
    }else{
        storeDataSetting(holder,boardData);
        state(holder, boardData);
        duplicate = false;
    }
}else{
if(zeroCount>6){
if(zero){
    clear(holder);
            storeDataSetting(holder,boardData);
            state(holder, boardData);
            zero = false;
            duplicate = false;
    }
}else{
zeroCount++;
}
}
    if(duplicate){
       final BoardDTO p = getItem(position);
       if (p != null) {
        Logger.debug("9");
        holder.eventLl.setTag(position+"");
        holder.profileMv.setTag(position+"");
        boardData.setArticlSeq(p.getArticlSeq());        
        holder.articlSeq.setText(boardData.getArticlSeq());
        return v;
    }
요런식으로 되어 있구요. 데이터는 들어옵니다. super( 부분에)
...