我正在尝试在FragmentPagerAdapter
上实施一个ViewPager
的图库。每个fragment
都有一个"删除" button
删除文件。
然后,我尝试删除此fragment
,并在调用fragment
的{{1}}时滚动到下一个callback
。
总之,首先触摸删除按钮时,删除远程FTP服务器中的文件,然后删除本地文件。
这是AsyncTask
Activity
容器
ViewPager
这是 public class MediaViewerActivity extends FragmentActivity implements OnFTPResult{
(...)
protected void onCreate(Bundle savedInstanceState) {
ArrayList<String> multimedia;
viewPager = (ViewPager) findViewById(R.id.pager);
multimedia = getFiles();
MediaViewerAdapter adapter;
adapter = new MediaViewerAdapter(getSupportFragmentManager(), MediaViewerActivity.this, multimedia);
viewPager.setOffscreenPageLimit(2);
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(position);
(...)
}
@Override
public void onActionPerformed(String result) {
switch (result) {
case "Done delete":
//remove the fragment and local file
break;
}
}
}
adapter
的代码
ViewPager
这是public class MediaViewerAdapter extends FragmentPagerAdapter implements ViewPager.OnPageChangeListener{
(...)
public MediaViewerAdapter(FragmentManager fm, Context _ctx,ArrayList<String> imagePaths) {
super(fm);
manager = fm;
_imagePaths = imagePaths;
ctx = _ctx;
}
}
(...)
@Override
public Fragment getItem(int position) {
Fragment fragment;
String[] fileExtensionCaching = _imagePaths.get(position).split("\\.");
String currentExtension = fileExtensionCaching[fileExtensionCaching.length - 1];
Bundle args = new Bundle();
args.putString("path", _imagePaths.get(position));
if((currentExtension.equals("pdf")))
fragment = FragmentPDFViewer.newInstance(args);
else
if((currentExtension.equals("jpg") || currentExtension.equals("png") || currentExtension.equals("gif"))) {
fragment = FragmentImageViewer.newInstance(args);
}
else{
fragment = FragmentVideoPlayer.newInstance(args);
}
return fragment;
}
@Override
public int getCount() {
return _imagePaths.size();
}
(...)
}
类
AsyncTask
这是删除当前片段然后滚动到下一个(如果有)的最佳安全方法?
由于