2010-05-03 7 views
1

나는 목록보기의 성능을 향상시키고 자한다.Android의 CustomListAdapter 문제? ClassCast 예외를 얻으려면? 방법?

이 내 어댑터 내의 getView 메서드에 대한 코드?

public void onScrollStateChanged(AbsListView view, int scrollState) { 
    switch (scrollState) { 
    case OnScrollListener.SCROLL_STATE_IDLE: 
     try { 
      MultiLine_bar_details1.mBusy = false; 

      int first = view.getFirstVisiblePosition(); 
      int count = view.getCount(); 

      for (int i = 0; i < count; i++) { 
       ImageView t = (ImageView) view.getChildAt(i);// here getting the ClassCastException 
       if (t.getTag(R.id.eve_img_detail1) != null) { 

        MultiLine_bar_details1.img_value = new URL(
          MultiLine_bar_details1.VAL4[first + i]); 

        MultiLine_bar_details1.mIcon11 = BitmapFactory 
          .decodeStream(MultiLine_bar_details1.img_value 
            .openConnection().getInputStream()); 
        MultiLine_bar_details1.img.setImageBitmap(MultiLine_bar_details1.mIcon11); 
        t.setTag(R.id.eve_img_detail1, null); 
       } 
      } 
     } catch (Exception e) { 
      Log.v(TAG, "Idle" + e); 
     } 

     // mStatus.setText("Idle"); 
     break; 
    case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL: 
     MultiLine_bar_details1.mBusy = true; 

     break; 
    case OnScrollListener.SCROLL_STATE_FLING: 
     MultiLine_bar_details1.mBusy = true; 
     break; 
    } 
} 

유휴 상태에서 예외를 받고 : 나를 제대로 출력을 얻을 수 있도록

05-03 16:47:15.201: VERBOSE/BS_Bars(258): Idlejava.lang.ClassCastException: android.widget.LinearLayout 

이 매우 복잡

public View getView(int arg0, View text_view_name, ViewGroup parent) { 
    try { 

     if (text_view_name == null) { 
      text_view_name = mInflater.inflate(
        R.layout.bs_content_list_item1, null); 
      text_view_name.setTag(R.id.text1_detail1, text_view_name 
        .findViewById(R.id.text1_detail1)); 
      text_view_name.setTag(R.id.text3_detail1, text_view_name 
        .findViewById(R.id.text3_detail1)); 
      text_view_name.setTag(R.id.eve_img_detail1, text_view_name 
        .findViewById(R.id.eve_img_detail1)); 
     } 

     text1 = (TextView) text_view_name.getTag(R.id.text1_detail1); 
     // text2 = (TextView) text_view_name.getTag(R.id.text2); 
     text3 = (TextView) text_view_name.getTag(R.id.text3_detail1); 
     img = (ImageView) text_view_name.getTag(R.id.eve_img_detail1); 
     text1.setText(VAL1[arg0]); 
     text3.setText(VAL3[arg0]); 

     if (!mBusy) { 
      img_value = new URL(VAL4[arg0]); 
      mIcon11 = BitmapFactory.decodeStream(img_value.openConnection() 
        .getInputStream()); 
      img.setImageBitmap(mIcon11); 

      text_view_name.setTag(R.id.eve_img_detail1, null); 
     } else { 
      img.setImageResource(R.drawable.icon); 
      text_view_name.setTag(R.id.eve_img_detail1, text_view_name 
        .findViewById(R.id.eve_img_detail1)); 
     } 

    } catch (Exception e) { 
     name = "Exception in MultiLine_bar_details1 getView"; 
     Log.v(TAG, name + e); 
    } 
    return text_view_name; 
} 

은 scrollstatechanged 방법에 대한 코드입니다. 사실 나는 사용자 정의 어댑터 목록보기있다. 그 아이콘은 listview 스크롤을 매우 slow.i 이미지 URL에서 아이콘에 대한 이미지를 받고 있어요. 최대 (위의 코드)까지 내 목록보기의 스크롤 성능을 향상시킬 수 있습니다. 이미지 아이콘이 해당 순서대로 적합하지 않습니다. 동적으로 변화 목록보기를 스크롤 할 때.

나는 commonsware busy coder guidethis blog을 언급했다.

편집 : 내 매우 큰 문제는

문제가 그 안에 무엇인가? "어떻게 우리가 매개 변수 AbsListView를 사용 scrollstatechanged 이미지보기에 액세스 할 수 있습니다"는 무엇입니까? 그것을 더 잘하는 방법? 어떤 아이디어?

답변

1

bs_content_list_item1.xml의 최상위보기는 무엇입니까? ListView.getChildAt (i)의 결과를 ImageView로 캐스팅하면 ImageView가 아닌 ​​것처럼 보입니다.

+0

예. 하지만 어떻게 이미지 뷰를 캐스팅 할 수 있을까요 ?? bs_content_list_item1.xml에는 목록보기의 내용이 있습니다. main.xml 파일의 기본 listview. – Praveen