0

나는이 ID를 가져 와서 ListView에 사용자의 프로필 사진을 표시하려고하는데이 앱을 MySQL 테이블에 기록하는 앱을 가지고 있지만 내가 뭘 잘못하고 있는지 모르겠다.Facebook 프로필 사진을 ListView의 ImageView로 설정

내 사용자 정의 ArrayAdapter와 :

public class VisualAdapter extends ArrayAdapter<String> { 

private final Context contexto; 

private final String[] comics, username, userid; 

URL img_url = null; 

Bitmap bm; 

public VisualAdapter(Context contexto, String[] comics, String[] username, 
     String[] userid) { 
    super(contexto, R.layout.exibeimg, comics); 
    this.contexto = contexto; 
    this.comics = comics; 
    this.username = username; 
    this.userid = userid; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    LayoutInflater inflater = (LayoutInflater) contexto 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    View rowView = inflater.inflate(R.layout.exibeimg, parent, false); 
    TextView textView = (TextView) rowView.findViewById(R.id.tvTitleImage); 
    ImageView imageView = (ImageView) rowView.findViewById(R.id.ivImageVisual); 
    ImageView ivUser = (ImageView) rowView.findViewById(R.id.ivUser); 
    TextView tvUser = (TextView) rowView.findViewById(R.id.tvUserNAME); 
    textView.setText(comics[position]); 
    tvUser.setText(username[position]); 

    try { 
     img_url = new URL("http://graph.facebook.com/"+userid+"/picture?type=thumbnail"); 
     bm = BitmapFactory.decodeStream(img_url.openConnection().getInputStream()); 
     ivUser.setImageBitmap(bm); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return rowView; 
} 

} 

로그 캣 : http://pastebin.com/kmLXKvZJ

또한,이 탭 안에 있습니다. 그것은 탭 2에있어, 탭 2에서 (이 목록을보기 위해) 클릭 할 때 앱이 탭 1에서 시작될 때,로드하는 데 몇 초가 걸립니다. 더 빨리로드 할 수있는 것이 있습니까?

답변

0

getView() 안에 동 기적으로 네트워크 작업을 수행하기 때문에로드하는 데 몇 초가 걸립니다. 네트워크 응답을 기다리고있을 때마다 기본 UI 스레드가보기를 렌더링하지 못하도록 차단합니다. 이것은 매우 나쁘고 당신이해야 할 일은 비동기식 이미지 지연로드를 수행하여 UI 스레드에서 사진을 다운로드하지 않도록하는 것입니다.

ListView을 올바르게 구현하는 방법에 대해이 great article을 읽으십시오. 그러면로드하는 데 몇 초가 걸리지 않습니다.

관련 문제