2

사용자 지정 목록 뷰를 작성한 다음 View Pager에 추가합니다.
하지만 화면을 빠르게 전환하면 View Pager는 1 개의 Custom ListView 만 표시합니다.
enter image description here페이저보기 만보기 1 ListView

SpeakingActivity.java

public class SpeakingActivity extends SherlockFragmentActivity { 
    static final int NUM_ITEMS = 4; 
    MyAdapter   mAdapter; 
    ViewPager   mPager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState){ 
     setTheme(R.style.Theme_Sherlock); // Used for theme switching in samples 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.fragment_pager); 
     mAdapter = new MyAdapter(getSupportFragmentManager()); 
     mPager = (ViewPager) findViewById(R.id.pager); 
     mPager.setAdapter(mAdapter); 
    } 

    public class MyAdapter extends FragmentPagerAdapter { 
     SpeakingFragment myFrag[]; 
     int     numItem = 4; 

     public MyAdapter(FragmentManager fm) { 
      super(fm); 
      myFrag = new SpeakingFragment[numItem]; 
      for(int i = 0; i < numItem; i++) { 
       myFrag[i] = new SpeakingFragment(); 
      } 
     } 

     @Override 
     public int getCount(){ 
      return numItem; 
     } 

     @Override 
     public Fragment getItem(int position){ 
      return myFrag[position]; 
     } 
    } 

SpeakingFragment.java

public class SpeakingFragment extends SherlockFragment { 
    public final String      KEY_SONG   = "song"; 
    public final String      KEY_ID   = "id"; 
    public final static String    KEY_TITLE  = "title"; 
    public final static String    KEY_ARTIST  = "artist"; 
    public final static String    KEY_DURATION = "duration"; 
    public final static String    KEY_THUMB_URL = "thumb_url"; 
    ListView          list; 
    LazyAdapter         adapter; 
    ArrayList<HashMap<String, String>> songsList; 

    @Override 
    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
    } 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
     View v = inflater.inflate(R.layout.main, container, false); 
     return v; 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState){ 
     super.onActivityCreated(savedInstanceState); 
     list = (ListView) getSherlockActivity().findViewById(R.id.list); 
     songsList = new ArrayList<HashMap<String, String>>(); 
     for(int i = 0; i < 15; i++) { 
      HashMap<String, String> map = new HashMap<String, String>(); 
      map.put(KEY_ID, String.valueOf(i)); 
      map.put(KEY_TITLE, "Title" + i); 
      map.put(KEY_ARTIST, "Dolphin"); 
      map.put(KEY_DURATION, "11:11"); 
      map.put(KEY_THUMB_URL, "Thumb"); 
      songsList.add(map); 
     } 
     adapter = new LazyAdapter(getSherlockActivity(), songsList); 
     list.setAdapter(adapter); 
     list.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id){ 
      } 
     }); 
    } 
} 

LazyAdapter.java

public class LazyAdapter extends BaseAdapter { 
    private Activity          activity; 
    private ArrayList<HashMap<String, String>> data; 
    private LayoutInflater        inflater = null; 
    public ImageLoader         imageLoader; 

    public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) { 
     activity = a; 
     data = d; 
     inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     imageLoader = new ImageLoader(activity.getApplicationContext()); 
    } 

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

    public Object getItem(int position){ 
     return position; 
    } 

    public long getItemId(int position){ 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent){ 
     View vi = convertView; 
     if(convertView == null) vi = inflater.inflate(R.layout.list_row, null); 
     TextView title = (TextView) vi.findViewById(R.id.title); // title 
     TextView artist = (TextView) vi.findViewById(R.id.artist); // artist name 
     TextView duration = (TextView) vi.findViewById(R.id.duration); // duration 
     ImageView thumb_image = (ImageView) vi.findViewById(R.id.list_image); // thumb image 
     HashMap<String, String> song = new HashMap<String, String>(); 
     song = data.get(position); 
     title.setText(song.get(SpeakingFragment.KEY_TITLE)); 
     artist.setText(song.get(SpeakingFragment.KEY_ARTIST)); 
     duration.setText(song.get(SpeakingFragment.KEY_DURATION)); 
     imageLoader.DisplayImage(song.get(SpeakingFragment.KEY_THUMB_URL), thumb_image); 
     return vi; 
    } 
} 
:

는 문제의 이미지

전체 코드를 사용해보십시오 here

답변

1

나는 내 자신을 발견했습니다.
onActivity 전에 신속한 조치가 취해졌습니다. 그것은 다음 조각이 나타나지 않도록합니다. 그러나 다시 되돌아 오면 onActivityCreated가 나타나서 나타납니다.
이 오류를 수정하려면 코드를 onActivityCreated에서 onCreateView로 변경하십시오 (onCreateView는 신속하게 수행되기 때문에 발생합니다).

관련 문제