내 Android 용 ListView를 사용자 정의하고 getView() 메소드에 문제가 있습니다. 여기 사용자 지정 listView가 무작위 순서로 적은 항목을 표시합니다.
public class BinderData extends BaseAdapter {
private LayoutInflater inflater;
private ArrayList targetList;
private ViewHolder holder;
private Activity nikola;
private Context context;
private static ArrayList genres = new ArrayList();
public BinderData(Activity act, List<Genre> map) {
targetList = new ArrayList();
for (int i = 0; i<map.size(); i++){
Genre genre = map.get(i);
targetList.add(genre);
ArrayList<Artist> aList = genre.getArtists();
for (int j = 0; j<aList.size(); j++){
targetList.add(aList.get(j));
}
}
this.nikola = act;
inflater = (LayoutInflater) act
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
그리고
내가 내 목록에 대한 레이아웃의 두 유형이 내의 getView() 메소드public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
if (convertView == null){
ViewableItem item = (ViewableItem)targetList.get(position);
if (item.isTypeOf().equalsIgnoreCase("genre")){
vi = inflater.inflate(R.layout.category_row, null);
holder = new GenreViewHolder();
((GenreViewHolder)holder).textViewGenreTitle = (TextView)vi.findViewById(R.id.textViewCategoryTitle);
String s = ((Genre)item).getTitle();
holder.setTitle(s);
}else{
vi = inflater.inflate(R.layout.list_row, null);
holder = new ArtistViewHolder();
((ArtistViewHolder)holder).textViewArtistName = (TextView)vi.findViewById(R.id.textViewAuthorNameHome);
String s = ((Artist)item).getArtist();
holder.setArtistName(s);
}
vi.setTag(holder);
}else{
holder = (ViewHolder)vi.getTag();
}
return vi;
}
입니다. 하나는 카테고리 제목 용이고 다른 하나는 해당 카테고리 아래 항목 용입니다.
http://imgur.com/xbPfGTi는 - 여기에 내가 내 목록보기에 표시해야 할 데이터로 채워진 TARGETLIST을 한 사진
입니다. (생성자에서) 그리고 문제가 있습니다! 목록에있는 아티스트가 계속 반복되며 카테고리가 올바른 위치에 있지 않습니다.
아이디어가 있으십니까?
정확한 문제는 무엇입니까? –
그림에서 볼 수 있습니다 ... 단지 5 ~ 6 개의 화면이 팽창되어있는 것처럼 보입니다. 다른 아티스트 (60 명)가 전혀 표시되지 않습니다 ... 하지만 이걸 지우면 --- (convertView == null) --- 모든 것이 정상적으로 작동합니다. 메모리 누수가있어 잠시 후 앱이 멈추는 문제가 있습니다. –
그리고 POP 카테고리를 두 배로해서는 안되는 또 하나의 문제가 있습니다. 그 행의 위치가 잘못되어 팝업 중 하나가 아닐 것이고, 뮤 또는 target list가 무 타겟이어야합니다. –