- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在我的 Android 应用程序中实现了 ViewPager。我想在其中添加一些图像,一切正常(图像添加),但是当我想删除图像时,它正在工作并删除该图像,但它删除最后一张图像而不是我要删除的特定图像,我不知道如何获取特定图像的位置并将其删除。
public class PhotoAdd_Adapter extends PagerAdapter {
private LayoutInflater inflater;
private Context context;
ArrayList<String> mylist;
SharedPreferences sharedPreferences;
JSONArray responsearray = null;
private static final String TAG_PHOTO_ONE = "Gallery_Full";
HashMap<String, String> get;
LinearLayout addimages;
String ImageID;
ProgressBar progressBar;
String finalimgpath, imageId;
ImageView imageView, deletebtn;
TextView no_image, p_id;
private FragmentManager f_manager;
int delPosition;
public PhotoAdd_Adapter(Context context, ArrayList<String> mylist, FragmentManager f_manager) {
this.f_manager = f_manager;
this.context = context;
this.mylist = mylist;
inflater = LayoutInflater.from(context);
sharedPreferences = context.getSharedPreferences(context.getString(R.string.prefs), 0);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public int getCount() {
return mylist.size();
}
@Override
public int getItemPosition(@NonNull Object object) {
if(mylist.contains(object)){
return mylist.indexOf(object);
}else {
return POSITION_NONE;
}
// return super.getItemPosition(object);
// return PagerAdapter.POSITION_NONE;
}
@Override
public Object instantiateItem(ViewGroup view, final int position) {
View imageLayout = inflater.inflate(R.layout.photoadd_adapter, view, false);
assert imageLayout != null;
imageView = imageLayout.findViewById(R.id.image_adapter);
deletebtn = imageLayout.findViewById(R.id.deletebtn);
p_id = imageLayout.findViewById(R.id.p_id);
this.delPosition = position;
String test = String.valueOf(mylist.get(position));
String finalimgpaths = context.getString(R.string.moreimgpath) + test;
Glide.with(context)
.load(finalimgpaths)
.into(imageView);
view.addView(imageLayout, 0);
deletebtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// showDialogBox();
imageId = ImageID;
Log.e("IMAGEIDONE", imageId);
mylist.remove(position);
notifyDataSetChanged();
responsearray = responsearray(responsearray, position);
new DeleteImage().execute(true);
}
});
return imageLayout;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view.equals(object);
}
@Override
public void restoreState(Parcelable state, ClassLoader loader) {
}
@Override
public Parcelable saveState() {
return null;
}
class DeleteImage extends AsyncTask<Boolean, Void, String> {
@Override
protected String doInBackground(Boolean... booleans) {
ProfileApi profileApi = new ProfileApi();
String result = null;
try {
Log.e("IMAGEID", ImageID);
result = profileApi.deleteImage(sharedPreferences.getString("id", ""), imageId);
Log.e("DELETERESULT", result);
JSONObject object = new JSONObject(result);
if (object.getString("error").equalsIgnoreCase("false")) {
return "true";
} else {
String errormsg = object.getString("response");
return errormsg;
}
} catch (ApiException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
// ad.hide();
super.onPostExecute(s);
try {
if (s != null) {
Toast.makeText(context, "Image Deleted", Toast.LENGTH_SHORT).show();
}
} catch (IllegalStateException e) {
e.printStackTrace();
}
}
}
public static JSONArray responsearray(JSONArray jarray, int pos) {
JSONArray Njarray = new JSONArray();
try {
for (int i = 0; i < jarray.length(); i++) {
if (i != pos)
Njarray.put(jarray.get(i));
}
} catch (Exception e) {
e.printStackTrace();
}
return Njarray;
}
}
最佳答案
您的问题是 View 寻呼机在删除图像任务完成之前重新加载。因此加载了同一组图像,但由于列表大小已修改,因此未加载最后一个图像。
解决方案:等待删除操作完成,然后再在 ViewPager 上调用 notificationDataSetChanged()
关于java - 如何删除查看寻呼机的特定位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55608918/
我需要能够垂直翻转一组图像。我看过使用 ViewPager,但它似乎只支持水平分页。 我也查看了 Gallery,但我也没有看到垂直分页的方法。无论如何,它已被弃用,取而代之的是 Horizont
我正在使用寻呼机中内置的 View ,并且希望有一个“显示全部”选项。即显示全部 第 2 页,共 10 页。 实现这一目标的最佳方法是什么? 史蒂夫 最佳答案 史蒂文,您可以克隆您的实际显示,然后在
当我使用 vim 编辑 Markdown 文件时,我有很好的语法着色(通过 vim-markdown 和 vim-markdown-preview 插件)。 当我使用 less(寻呼机)查看文件时,我
在我的 Android 应用程序中,我已经能够在一段时间后自动滚动查看寻呼机。我找不到显示滚动发生前剩余时间的寻呼机指示器。 我在下面附上了一个网站的屏幕截图,以了解我想要实现的目标。 如果您可以共享
当您编写的每个代码都立即运行并且您未按时完成计划时,您是否知道这种感觉:-P 就像'哦,是的,现在我有时间让它变得完美'。这就是我现在的位置^^ 所以我用 JSF (ui:repeat) 实现了一个转
我在 Android 应用程序中有一个项目列表,我希望每个项目都在一个页面上。问题是每个项目都设置了一个带有 imageview 的布局,它从一个唯一的 url 下载它的图像。这有可能实现吗?如何实现
我想同步两个 View 寻呼机之间的触摸事件。我已经试过了,但没有发现任何效果。 viewPager.setOnTouchListener(new View.OnTouchListener() {
我必须构建具有无限自动滚动功能的 View 寻呼机。我还需要在 View 寻呼机下方显示一个页面指示器,它应该根据滚动事件做出响应。目前我已经为无限自动滚动应用了以下逻辑: public void s
我正在尝试按照一些教程使用 View 寻呼机创建一个自动图像 slider 。我让一切正常,但后来我看到了 编舞:跳过 1 帧!应用程序可能在其主线程上做了太多工作。 并搜索了错误。` 你看,在我的代
如何从viewpager的第0个index跳转到view pager的最后一个index?那就是如何让view pager循环呢?如果用户向左滑动,我想跳转到最后一个索引;如果用户向右滑动,我想从最后
我在一个 iOS 应用程序上工作,它从服务器获取视频和图像,每个对象都有很多图像和视频,我需要在 slider (寻呼机)中显示这些图像和视频,用户可以在其中滑动以获取下一个,并且我需要将这些视频和图
我们目前正在使用 VS 2008 C# 开发 Windows 窗体应用程序。此应用程序用于阅读长(200 - 300 页)的法律文件,它处理大约 30 - 40 个文档。应用程序在文档文本中搜索,在文
我正在开发一个项目,其中我在一个屏幕上使用 View Pager,如下所示: 但是你可以在那里看到,有一个上层布局,其中列出了根据显示的页面选择的年份。当我们滑动 View 寻呼机时,年份也会根据显示
我需要在带有图像的 View 寻呼机文件中获取页面指示器。这是我的代码。 public class IndicatorActivity extends Activity { /** Called w
有没有办法用代表每张幻灯片的单词替换寻呼机中 slider 的圆圈(就像可单击的菜单,滑动其下方的内容)?选项在这里http://bxslider.com/options但不确定哪一个可以实现这一目标
ViewPager 叠加在 fab 之上。如何将 fab 放在首位? xml: 或者也许这不是原因?当我在上面时,只是没有按下按钮,但选项卡被翻转。 最佳答案 Coordinat
我正在尝试实现一个垂直可滑动的ViewPager,它有一堆卡片,就像外观一样。 我能够使用 ViewPager.PageTransformer 并交换触摸点来实现 VerticalViewPager。
我无法以编程方式创建和添加 View 寻呼机。 我找到了这个问题Android create ViewPager programmatically但接受的答案对我不起作用。 相关代码如下。
我有一个 View 寻呼机,其中每个页面都是一个自定义 View ( ... 而不是 Fragment ),我正在使用 LayoutInflator 进行扩充。 .每个自定义 View 都有一个 Im
我已经使用 jQuery 设置了一个动画 slider : jsFiddle 演示:http://jsfiddle.net/neal_fletcher/9zRDV/ 原因是我想在幻灯片上实现轻微的悬垂
我是一名优秀的程序员,十分优秀!