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

listview 이상현상==>스크롤을 하면 제대로 나오는데..

0 추천

스크롤을 하면 화면이 제대로 나오는데..

 
스크롤을 하지 않으면 첫번째 셀만 제대로 화면이 나오고 나머지 웹뷰는 빈화면으로 나옵니다 그러다가
 
리스트 뷰를 스크롤하면 이미지와 텍스트가  정상적으로 나옵니다..
 
나름 구글링을 하여 홀더두 구현했지만 변화가 없어 원인을 아직 못찾고 있습니다.
 
뭔가 리스트가 꼬인것 같기는 한데 .. 어디가 왜 꼬인지는 잘모르겠네요..;;
 
고수님들에게 의견을 구합니다.
 
어댑터의 GetView 부분입니다.

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder = new ViewHolder(); 

         if (convertView == null) 

         { 

                 convertView = mInflater.inflate(R.layout.list_cell, parent, false); 

                 holder.textDate = (TextView)convertView.findViewById(R.id.timeTxt);

                 holder.contentTitle = (TextView)convertView.findViewById(R.id.contentTxt);

                 holder.webImgs = (WebView)convertView.findViewById(R.id.resultImg);

                 convertView.setTag(holder); 

         } else { 

                 holder = (ViewHolder)convertView.getTag(); 

                 final Main myItem = boards.get(position);

                 holder.textDate.setText(myItem.getTime_recoder());

                 holder.contentTitle.setText(myItem.getContent());

                 

                 if (holder. webImgs!= null){

                holder. webImgs.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);

                holder. webImgs.setHorizontalScrollBarEnabled(false);

                holder. webImgs.setVerticalScrollBarEnabled(false);

                holder. webImgs.setClickable(false);

                holder. webImgs.setFocusable(false);

                holder. webImgs.getSettings().setUseWideViewPort(false);

                holder. webImgs.getSettings().setBuiltInZoomControls(false);

                holder. webImgs.getSettings().setSupportZoom(false);





                holder. webImgs.setInitialScale(60);

                holder. webImgs.getSettings().setDefaultZoom(ZoomDensity.FAR);

                holder. webImgs.loadUrl(myItem.getImg_url());

                //holder.gifImgs.loadUrl("http://m.naver.com");

                holder. webImgs.invalidate();

                 }

                 

         } 

        

         

return convertView;

}



Activity 부분입니다



listView = (ListView)findViewById(R.id.listView);

boards = new ArrayList<Main>();

adapter = new MainAdapter(MainActivity.this, boards);



listView.setAdapter(adapter);

 웹에서 데이터를 가져오는 부분입니다

private class ReadBoardsTask extends AsyncTask<String, Void, List<Main>> {



@Override

protected List<Main> doInBackground(String... params) {

// TODO Auto-generated method stub

String url = params[0];

String json = null;

List<Main> boards = null;

try {

// 지정된 url에서 JSON 문자열을 읽어 온다.

json = HttpHelper.get(url, "utf-8");

Gson gson = new GsonBuilder().setDateFormat("yyyy/MM/dd").create();

java.lang.reflect.Type boardsType = new TypeToken<List<Main>>(){}.getType();

// JSON 문자열을 객체로 역직렬화한다.

boards = gson.fromJson(json, boardsType);

} catch (IOException e) {

// TODO Auto-generated catch block

}

return boards;

}



@Override

protected void onPostExecute(List<Main> result) {

// TODO Auto-generated method stub

// 프로그레스 다이얼로그 박스를 제거



if(result == null) {

// 검색결과가 없음

Toast.makeText(getApplicationContext(), "데이터가 존재하지 않습니다.", Toast.LENGTH_SHORT).show();

} else {

for(Main board : result) {

adapter.addBoard(board);

}

adapter.notifyDataSetChanged();

// 다음 번에 읽을 페이지 번호 갱신

}

}



}


 

 

풋사과1 (200 포인트) 님이 2014년 2월 12일 질문

1개의 답변

0 추천
holder.webImgs의 설정하고 Url 로드하는 부분이 if 문안에 있어서 그런 현상이 나타난 겁니다.

 

처음 화면이 뜰 때에는  convertView가 null입니다. 설정하고 loadUrl하는 코드를 패스해버리죠. 스크롤하면 그 부분을 타니 웹뷰가 표시되구요.

 

if 문 밖으로 빼주세요.
방귀과장 (18,940 포인트) 님이 2014년 2월 12일 답변
...