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