2012-01-20 3 views
3

이미지를 표시합니다 (이 시점에서 하나의 지정된 국가에만 해당). 목록보기를 스크롤하면 이미지가 하나의 지정된 행에 나타나야합니다 열.이미지가있는 목록보기, 그러나 목록을 스크롤 할 때 이미지가 잘못된 행으로 표시됩니다.

예 : 'france'행에는 프랑스 국기가 표시되지만 다른 행에는 같은 플래그가 표시됩니다. 모든 행에있는 것은 아닙니다. 지금은 프랑스 국기 만 테스트하고 있습니다. 조회수 ListViewsconvertView을 통해 재활용 얻을 때문에

public class MyListAdapter extends SimpleCursorAdapter{ 

    private Cursor cur; 
    private Context context; 
    private SQLiteDatabase db; 
    private static final String ASSETS_DIR = "images/"; 
    private String Flag; 

    public MyListAdapter (Context context, Cursor c, SQLiteDatabase db) { 
     super(context, R.layout.countries_list_item, c, new String[] {}, new int[] {}); 
     this.cur=super.getCursor(); 
     this.context = context; 
     this.db=db; 

    } 

    private class ViewHolder { 
     TextView txtTitle, txtDate; 
     ImageView countryIcon; 
    } 



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

     ViewHolder holder = null; 
     if (convertView == null) { 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = inflater.inflate(R.layout.countries_list_item, null); 

      holder = new ViewHolder(); 
      holder.txtTitle = (TextView) convertView.findViewById(R.id.lastName); 
      holder.txtDate = (TextView) convertView.findViewById(R.id.firstName); 
      holder.countryIcon = (ImageView) convertView.findViewById(R.id.country_icon); 


      convertView.setTag(holder); 
      } 
      else { 
      holder = (ViewHolder) convertView.getTag(); 
      } 

     this.cur.moveToPosition(position); 

     holder.txtTitle.setText(this.cur.getString(this.cur.getColumnIndex("CountryID"))); 
     holder.txtDate.setText(this.cur.getString(this.cur.getColumnIndex("Country"))); 
     Flag =(this.cur.getString(this.cur.getColumnIndex("CountryImage"))); 
     Flag=Flag.trim(); 

     // Set country icon usign File path 
     try { 
      String imgFilePath = ASSETS_DIR +""+Flag; 
      Bitmap bitmap = BitmapFactory.decodeStream(this.context.getResources().getAssets().open(imgFilePath));    
      holder.countryIcon.setImageBitmap(bitmap); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return convertView; 
    } 
} 
+1

http://stackoverflow.com/questions/7738527/getting-an-issue-while-checking-the-dynamically-generated-checkbox-through-list/7738854#7738854 –

답변

0

은이 일어나고있다. 행에 Views을 참조 할 수 있도록 홀더를 이미 가지고 있으므로 ImageView을 잡고 어댑터의 데이터를 기반으로 적절한 이미지로 이미지를 설정해야합니다. 목록보기의 항목은 항목이 어떤 항목인지 알지 못하기 때문에 ListView의보기임을 알기 때문입니다. 그것이 무엇을 나타내는 지 "알기"위해 도움을 주어야합니다.

listviews에서보기를 재활용하는 것은 매우 일반적인 혼동의 원인입니다. 안녕하세요 Checkboxes in a ListView - When I select the first, it checks the last and vice versa

+0

: 여기 내 설명을 참조하십시오 사치. 나는 RowData 이름을 가진 빈 클래스를 만들었지 만, "RowData object = getModel (position);" getView()에서 getmodel에 오류가 발생했습니다. 문제가 무엇인지 알기 위해 다른 예제를 시도했지만 아무 것도하지 않습니다. 고맙습니다 – filoli

관련 문제