Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android onClick()删除列表项并刷新_Android_Listview_Onclick - Fatal编程技术网

Android onClick()删除列表项并刷新

Android onClick()删除列表项并刷新,android,listview,onclick,Android,Listview,Onclick,我有一个列表视图,,其中每个项目都可以单击。但是在每个项目中,我都有一个可点击的按钮——点击后应该会删除当前项目 问题是,列表是从我的visted.java类中的JSON生成的 我试过这个: 在我的适配器中管理按钮单击 @NonNull @Override public View getView(final int position, View convertView, @NonNull final ViewGroup parent) { View v = convertView;

我有一个
列表视图,
,其中每个项目都可以单击。但是在每个项目中,我都有一个可点击的按钮——点击后应该会删除当前项目

问题是,列表是从我的
visted.java
类中的JSON生成的

我试过这个:

在我的适配器中管理按钮单击

@NonNull
@Override
public View getView(final int position, View convertView, @NonNull final ViewGroup parent) {
    View v = convertView;
    final ViewHolder holder;
    if (v == null) {
        holder = new ViewHolder();
        v = vi.inflate(Resource, null);
        holder.tvNazov = v.findViewById(R.id.tvNazov);
        holder.thumb = v.findViewById(R.id.ivImage);
        holder.tvTyp = v.findViewById(R.id.tvTyp);
        holder.tvPlace = v.findViewById(R.id.tvPlace);
        holder.tvPerex = v.findViewById(R.id.tvPerex);
        holder.tvLetter = v.findViewById(R.id.item_row_letter);
        holder.img1 = v.findViewById(R.id.imag1);
        holder.visiticon = v.findViewById(R.id.visiticon);
        v.setTag(holder);
    } else {
        holder = (ViewHolder) v.getTag();
    }

   holder.thumb.setImageResource(R.drawable.ic_launcher_foreground);
   holder.tvNazov.setText(actorList.get(position).getNazov());

    final DatabaseHelper myDb;
    myDb = new DatabaseHelper(context);

    if(myDb.CheckDB(actorList.get(position).getExterier())) {
        holder.visiticon.setImageResource(R.drawable.visited2);
    } else {
        holder.visiticon.setImageResource(R.drawable.notvisited);
    }

    final View finalV = v;
    holder.visiticon
            .setOnClickListener(new View.OnClickListener() {

                public void onClick(View arg0) {
                    MediaPlayer mp = MediaPlayer.create(context,R.raw.click);
                    mp.start();
                   // holder.visiticon.playSoundEffect(SoundEffectConstants.CLICK);

                    myDb.ToggleVisit(actorList.get(position).getExterier());
                    if(myDb.CheckDB(actorList.get(position).getExterier())) {
                        holder.visiticon.setImageResource(R.drawable.visited2);
                    } else {
                        holder.visiticon.setImageResource(R.drawable.notvisited);
                        finalV.setVisibility(View.GONE);
                        notifyDataSetChanged();
                    }


                }
            });

   String pismeno = actorList.get(position).getLetter();

    if(pismeno.equalsIgnoreCase("x")) {holder.tvLetter.setVisibility(View.GONE);} else {holder.tvLetter.setVisibility(View.VISIBLE);holder.tvLetter.setText(pismeno);}

    Picasso.with(context).load(actorList.get(position).getThumb()).memoryPolicy(MemoryPolicy.NO_CACHE).networkPolicy(NetworkPolicy.NO_CACHE).into(holder.thumb);
    holder.tvTyp.setText(actorList.get(position).getTyp());
    holder.tvPlace.setText(actorList.get(position).getPlace());
    holder.tvPerex.setText(actorList.get(position).getPerex());

    v.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent intent = new Intent(view.getContext(), SingleitemView.class);

            intent.putExtra("name", actorList.get(position).getNazov());
            intent.putExtra("adresar", actorList.get(position).getExterier());

            view.getContext().startActivity(intent);
        }
    });





    return v;
}
现在,当前项已隐藏在onclick中-这工作正常,但是,仍然存在一个空白,我需要刷新整个列表


使用
notifyDataSetChanged()只刷新列表,但空项仍然存在。因为我想我需要再次调用
visitored.java
类,或者不确定如何删除整个项目,而不仅仅是列表中的内容。

请尝试添加click listener以删除项目,如下所示

//Your click listener to delete item and refresh
        v.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // If you want to delete item from DB then you need to call delete query here
                actorList.remove(position);
                notifyDataSetChanged();
            }
        });