커스텀 리스트뷰를 만들어 적용 후 데이터를 넣고 스크롤을 했더니 아이템 위치가 변경되는 현상이 발견.

생성한 Adapter의 getView에 홀더를 추가하여 데이터 변형을 방지 하였다.


@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		final int pos = position;
		
		CustomViewHolder holder;

		if ( convertView == null ) {
			.. 생략
			final TextView textview = (TextView)convertView.findViewById(R.id.custom_word_text);
			textview.setText( m_List.get(pos).getWord() );

			ImageButton btn = (ImageButton) convertView.findViewById(R.id.custom_word_listen);

			holder = new CustomViewHolder();
			holder.m_TextView	= textview;
			holder.m_ImgBtn		= btn;
			
			convertView.setTag(holder);
		}
		else {
			holder = (CustomViewHolder) convertView.getTag();
		}

		if ( m_List.get(pos).isVisibleWord() ) {
			holder.m_TextView.setText(m_List.get(pos).getWord());
		}
		else
			holder.m_TextView.setText(m_List.get(pos).getMeaning());
			
		return convertView;
	}
	
	public class CustomViewHolder {
		public TextView		m_TextView;
		public ImageButton	m_ImgBtn;
	}





+ Recent posts