我有一个
ListView,
每个项目都可以点击。但是在每一个项目中我都有另一个可点击的按钮-它应该可以一次点击就删除当前项目。
问题是,列表是从
JSON格式
在我的
Visited.java
上课。
我试过这个:
单击按钮是在适配器中管理的。
@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();
在适配器中只是刷新列表,但空项仍然存在。因为我想我需要打电话给
访问.java
再次初始化,或者不确定如何删除整个项,而不仅仅是从列表中删除它的内容。