0

BaseAdapter을 사용하여 사용자 지정 목록보기를 사용할 때 listView를 최적화하기 위해 모든 것이 정상적으로 작동하는 경우 Viewholder을 사용해야했습니다.사용자 지정 ListView의 값 반복

이제 목록보기를 스크롤 할 때마다 매회 5 ~ 6 개의 레코드가 표시됩니다. 다음 코드는 내가 사용하고있는 코드입니다 :

Context context; 
LayoutInflater inflater; 
MainActivity main; 
ArrayList<HashMap<String, String>> data; 
HashMap<String, String> itemList; 

static ImageLoader imageLoader; 
Internholder holder; 
String flight; 
View itemView ; 
ImageView flag; 
TextView flight_view,status_view; 
TextView origin_item_view; 
TextView expected_time_view,flight_item_view; 
HashMap<String, String> resultp = new HashMap<String, String>(); 
List<String> values = new ArrayList<String>(); 

public khidomlistadapter(Context context, 
     ArrayList<HashMap<String, String>> arraylist) { 
    this.context = context; 
    data = arraylist; 

    imageLoader = new ImageLoader(context); 
} 

@Override 
public int getCount() { 
    return data.size(); 
} 

@Override 
public Object getItem(int position) { 
    return null; 
} 

@Override 
public long getItemId(int position) { 
    return 0; 
} 

public View getView(final int position, View convertView, ViewGroup parent) { 
    // Declare Variables 
    View v = convertView; 
    Internholder holder;  
    if (v == null) { 
    LayoutInflater vi = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 


    v = vi.inflate(R.layout.listview_item, null); 
    holder = new Internholder(); 
    holder.flight_item_view = (TextView) v.findViewById(R.id.flight); 
    holder.origin_item_view = (TextView) v.findViewById(R.id.origin); 
    holder.expected_time_view = (TextView) v.findViewById(R.id.expected); 
    holder.status_view =(TextView) v.findViewById(R.id.status); 
    // Locate the ImageView in listview_item.xml 
    holder.flag = (ImageView) v.findViewById(R.id.flag); 
    v.setTag(holder); 

    } 
    else 
    { 
     holder = (Internholder) v.getTag(); 
    } 
    // Get the position 


    resultp = data.get(position); 

    //Capture position and set results to the ImageView 
    //Passes flag images URL into ImageLoader.class 
    holder.flight_item_view.setText(resultp.get("flight")); 
    holder.origin_item_view.setText(resultp.get("origin")); 
    holder.expected_time_view.setText(resultp.get("expected_time")); 
    holder.status_view.setText(resultp.get("status")); 
    imageLoader.DisplayImage(resultp.get("flag"), holder.flag); 



    return v; 
} 

누군가 내가 잘못하고있는 것을 지적 할 수 있습니까?

+0

당신이 수단 "이 5 기록 6마다에서 나타난다"무엇을 명확히 할 수 있습니까? 또한 제목에 오타를 수정할 수 있습니까? – cybersam

+0

스크롤시 최상위 값을 다시 반복 –

답변

0

이 도울 수있을 수도 있습니다

v = inflater.inflate(R.layout.listview_item, parent, false); 

같은보기를 부풀려 수 있습니다.

+0

아니요 이미 시도한 적이 없습니다. 작동하지 않았습니다. –

+0

viewHolder를 사용하지 않을 때 작동합니다. –

0

오버라이드 된 2 개의 getter에 대해 올바른 반환 값을 가져야합니다. 코드의 나머지 부분을 바탕으로,이 작동 될 수 있습니다

@Override 
public Object getItem(int position) { 
    return data.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 
+0

나는 이미 시도한 바있다. –