2013-01-03 45 views
0

我需要改變View pager Fragment我的getItem方法View pager適配器開關片段

@Override 
    public Fragment getItem(int position) { 

    fragmentPosition = position; 
    Log.e("PageAdapter", "Creating fragment at: " + position); 
    DefinedValues.thumbnailInfo.put("activity", DefinedValues.images); 
    DefinedValues.thumbnailInfo.put("type", "info"); 
    DefinedValues.thumbnailInfo.put("page", position+ 1 + ""); 

    String request = Json.stringToJson(DefinedValues.thumbnailInfo); 
    DefinedValues.thumbnailInfo.clear(); 

    StringAsyncRetriever net = new StringAsyncRetriever(); 
    net.setListener(MyPagerAdapter.this); 
    net.execute(request, DefinedValues.GET_DATA); 
    Log.d(TAG, "got item @ " + position); 

    fragment1 myFragment = new fragment1(); 
    return myFragment; 
} 

,我需要改變它時的AsyncTask結束了對一個顯示圖像

有該片段1類:

public class fragment1 extends Fragment { 

GridView gridView; 
public ImageAdapter adapter; 
public int position; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     // 
     Bundle savedInstanceState) { 

    adapter = new ImageAdapter(this.getActivity(), position); 


    if (container == null) { 
     Log.e("Null container", "Null"); 
     return null; 
    } 
    //Log.e("fragment1", "fragment1 reached!"); 
    View view = inflater.inflate(R.layout.menu1_fragment, container, false); 
    gridView = (GridView)view.findViewById(R.id.gridview1); 

    gridView.setAdapter(adapter); 
    DefinedValues.adapterContainer.add(adapter); 
    //Log.d("Fragment1 adapter count: ", DefinedValues.adapterContainer.size() + ""); 


/* gridView.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
      ImageView imageView = new ImageView(getActivity()); 
      LinearLayout.LayoutParams vp = new LinearLayout.LayoutParams 
        (LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
      imageView.setLayoutParams(vp); 

      imageView.setImageBitmap(DefinedValues.imageContainer.get(position).getThumbnail()); 
      getActivity().addContentView(imageView, vp); 
     } 


    }); 
    */ 


    return gridView; 
} 

所以,我怎麼能添加的AsyncTask結束時的GridView只片段?

回答

0

您應該讓ViewPager處理碎片的更改。您可以在getItem中返回正確的片段。只需隱藏該片段中的所有內容,並選擇渲染其他您在FragmentDummy中正在執行的操作。然後,將片段傳遞給AsyncTask或通過AsyncTask中的id/tag獲取片段。然後,您可以在任務完成並隱藏片段的虛擬部分後,在片段中顯示正確的內容視圖。

+0

謝謝。我更新了我的問題 – Romans

+0

什麼是'StringAsyncRetriever'?如果是自定義類,則可以添加對片段的引用,然後在onPostExecute中調用片段上的fragment.onImagesReady之類的函數,然後將圖像加載到onImagesReady()中。 –

+0

謝謝,解決了問題! – Romans