Android ListView 무한 순환 스크롤 실현

본 논문 의 사례 는 안 드 로 이 드 무한 순환 스크롤 의 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
프로젝트 는 목록 데 이 터 를 순환 적 으로 보 여 줘 야 하기 때문에 이 무한 순환 스크롤 의 LIstView 를 실현 하 였 습 니 다.먼저 원리,원 리 를 말씀 드 리 겠 습 니 다.사실은 간단 합 니 다.먼저 보 여 드릴 데 이 터 를 세 번 순환 적 으로 보 여 드 리 겠 습 니 다.

ListView 의 스크롤 이 벤트 를 감청 합 니 다.ListView 가 두 번 째 두 번 째 두 번 째 로 굴 러 갈 때 ListView 는 자동 으로 두 번 째 두 번 째 두 번 째 로 넘 어 갑 니 다.마찬가지 로 ListView 가 꼴찌 첫 번 째 로 굴 러 갈 때 ListView 는 자동 으로 두 번 째 꼴찌 첫 번 째 로 넘 어 갑 니 다.그 다음 에 끊임없이 위로 또는 아래로 미 끄 러 질 수 있 습 니 다.영원히 끝 이 나 지 않 습 니 다.쓸데없는 말 하지 마 세 요.위로
코드:
ListView 를 세 번 반복 해서 보 여 줍 니 다.
우선 나머지 를 취 하 는 방법 을 이용 하여 List 안의 데 이 터 를 순환 적 으로 보 여 줍 니 다.

public class ListAdapter extends BaseAdapter {
 
 private List<String> list;
 private LayoutInflater mInflater;
 
 public ListAdapter(Context context, List<String> list){
 this.list = list;
 this.mInflater = LayoutInflater.from(context);
 }
 /**
 *          
 */
 @Override
 public int getCount() {
 if(list != null){
  return list.size() * 3;
 }
 return 0;
 }
 
 @Override
 public Object getItem(int arg0) {
 
 return list.get(arg0 % list.size());
 }
 
 @Override
 public long getItemId(int arg0) {
 return arg0 % list.size();
 }
 @Override
 public View getView(int postition, View convertView, ViewGroup arg2) {
 ViewHoler viewHolder = null;
 if(convertView == null){
  viewHolder = new ViewHoler();
  convertView = mInflater.inflate(R.layout.adapter_list_layout, null);
  viewHolder.tvText = (TextView) convertView.findViewById(R.id.adapter_list_layout_tv);
  convertView.setTag(viewHolder);
 }else{
  viewHolder = (ViewHoler) convertView.getTag();
 }
 viewHolder.tvText.setText(list.get(postition % list.size()));//      
 return convertView;
 }
 
 static class ViewHoler{
 TextView tvText;
 }
 
}
그리고 ListView 의 스크롤 이 벤트 를 감청 합 니 다.

public class MainActivity extends Activity implements OnScrollListener {
 
 private ListView listView;
 private List<String> list;
 private ListAdapter adapter;
// private LinearLayout linear;
// 
// private int stopPosition;
// private int firstViewHeight;
 
 
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    listView = (ListView) findViewById(R.id.listView1);
    list = getList();
    adapter = new ListAdapter(this, list);
    listView.setAdapter(adapter);
    listView.setOnScrollListener(this);
    listView.setSelection(list.size());
  }
 
  /**
   *     
   * @return
   */
  public List<String> getList(){
   List<String> list = new ArrayList<String>();
   for (int i = 0; i < 10; i++) {
  list.add(String.valueOf(i));
 }
   return list;
  }
 
 
 @Override
 public void onScrollStateChanged(AbsListView view, int scrollState) {
 
 }
 
 /**
 *       ,        ,   list.size()+2 ,         ,       ,setSelection ,
 *   listView      ,  setSelection      ,           
 */
 @Override
 public void onScroll(AbsListView view, int firstVisibleItem,
  int visibleItemCount, int totalItemCount) {
 
 /**           */
 if (firstVisibleItem <= 2) {
  listView.setSelection(list.size() + 2);
 } else if (firstVisibleItem + visibleItemCount > adapter.getCount() - 2) {//       
  listView.setSelection(firstVisibleItem - list.size());
 }
 
 }
  
}
이렇게 간단 합 니 다.헤헤,표 현 력 이 부족 합 니 다.알 아 보 셨 는 지 모 르 겠 습 니 다.못 알 아 보 셨 다 면 뒤에 소스 코드 를 붙 여 주세요안 드 로 이 드 무한 순환 스크롤
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기