Ma ligne listview personnalisée a un bouton Supprimer. J'essaie de supprimer un élément spécifique dans listview avec ce bouton de suppression. (Supprimer de l'action des favoris). Je peux supprimer l'élément sélectionné mais le reste de la liste (éléments sous l'élément sélectionné) en supprimant avec lui. La partie supérieure reste toujours. Comment puis-je réparer cela? Merci d'avance.Suppression d'un élément sélectionné avec le reste de la liste dans un problème de listview personnalisé
FavoriteListAdapter:
public class FavoritesListAdapter extends ArrayAdapter<String> {
private Activity context;
private List<String> radioName;
private List<String> listenerNumbers;
public FavoritesListAdapter(Activity context, List<String> radioName, List<String> listenerNumbers) {
super(context, R.layout.custom_favorites_listview, radioName);
this.context=context;
this.radioName=radioName;
this.listenerNumbers=listenerNumbers;
}
@NonNull
@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
View r= convertView;
FavoritesViewHolder viewHolder = null;
if (r == null) {
LayoutInflater layoutInflater= context.getLayoutInflater();
r= layoutInflater.inflate(R.layout.custom_favorites_listview,null,true);
viewHolder = new FavoritesViewHolder(r);
r.setTag(viewHolder);
}
else {
viewHolder = (FavoritesViewHolder) r.getTag();
}
viewHolder.row_tv_favorites_radio_name.setText(radioName.get(position));
viewHolder.row_img_favorites_radio_icon.setImageResource(R.drawable.radio_logo_renkli);
viewHolder.row_tv_favorites_listener_numbers.setText("Listeners : " + listenerNumbers.get(position));
viewHolder.button_remove_from_favorites_list.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
listenerNumbers.remove(position);
radioName.remove(position);
SharedPreferences settings = context.getSharedPreferences("PREFS", 0);
final SharedPreferences.Editor editor = settings.edit();
editor.remove("radio_link"+ position);
editor.remove("radio_name" + position);
editor.remove("listener_number" + position);
// editor.clear();
editor.commit();
// FavoritesFragment.radio_name_list.remove(position);
// FavoritesFragment.radio_link_list.remove(position);
// FavoritesFragment.listener_numbers.remove(position);
notifyDataSetChanged();
}
});
return r;
}
class FavoritesViewHolder {
TextView row_tv_favorites_radio_name;
TextView row_tv_favorites_listener_numbers;
ImageView row_img_favorites_radio_icon;
Button button_remove_from_favorites_list;
FavoritesViewHolder(View v) {
row_tv_favorites_radio_name= (TextView) v.findViewById(R.id.txt_radio_name_favorites);
row_tv_favorites_listener_numbers = (TextView) v.findViewById(R.id.txt_listener_numbers_favorites);
row_img_favorites_radio_icon = (ImageView) v.findViewById(R.id.img_radio_icon_favorites);
button_remove_from_favorites_list = (Button) v.findViewById(R.id.remove_favorites_from_list_button);
}
}
}
Dans mon PlayRadioFragment, les utilisateurs ont ajouter un bouton de favori, et les valeurs envoyées FavoritesFragment avec des touches uniques
public static int incrementedValue = 0;
SharedPreferences settings = getActivity().getSharedPreferences("PREFS", 0);
final SharedPreferences.Editor editor = settings.edit();
add_favorites_button= (Button) view.findViewById(R.id.add_favorites_button);
add_favorites_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
editor.putString("radio_link"+ incrementedValue, radio_play_link);
editor.putString("radio_name" + incrementedValue, radio_name);
editor.putString("listener_number" + incrementedValue, listener_number);
// editor.clear();
editor.commit();
incrementedValue++;
}
});
Et voici mon FavoritesFragment:
public class FavoritesFragment extends Fragment {
public static FavoritesListAdapter adapter_2;
public FavoritesFragment() {
// Required empty public constructor
}
TextView radio_name_txt, radio_link_txt;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view= inflater.inflate(R.layout.fragment_favorites, container, false);
final List<String> radio_name_list = new ArrayList<>();
final List<String> radio_link_list = new ArrayList<>();
final List<String> listener_numbers = new ArrayList<>();
for (int i=0; i<Integer.MAX_VALUE; i++) {
SharedPreferences settings = getActivity().getSharedPreferences("PREFS",0);
String radio_name = settings.getString("radio_name" +i, "");
String radio_link = settings.getString("radio_link" +i, "");
String listener_number = settings.getString("listener_number" +i, "");
if (TextUtils.isEmpty(radio_name)){break;}
else {radio_name_list.add(radio_name);}
if (TextUtils.isEmpty(radio_link)){break;}
else {radio_link_list.add(radio_link);}
listener_numbers.add(listener_number);
}
PlayRadioFragment.incrementedValue = radio_name_list.size();
ListView listView_favorites = (ListView) view.findViewById(R.id.listview_favorites);
adapter_2 = new FavoritesListAdapter(getActivity(), radio_name_list, listener_numbers);
listView_favorites.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
PlayRadioFragment fragment= new PlayRadioFragment();
Bundle bundle= new Bundle();
FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();
bundle.putString("radio_play_links", radio_link_list.get(position));
bundle.putString("radio_name", radio_name_list.get(position));
bundle.putString("listener_number", listener_numbers.get(position));
fragment.setArguments(bundle);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.replace(R.id.frame_layout,fragment);
fragmentTransaction.commit();
}
});
listView_favorites.setAdapter(adapter_2);
return view;
}
Voulez-vous supprimer l'élément ou le supprimer des favoris? – YoLo
Ce serait génial, mais je ne pouvais pas faire comme ça. Donc j'essaye de supprimer le favori sélectionné sur listview. – PinkRabbits
Pouvez-vous utiliser la classe d'objets S'il vous plaît, il va rendre le travail plus facile – YoLo