Ich lade ja aus der Datenbank die Werte über ein Base Adapter in die App. Wenn jemand was angeklickt hat, soll es ja auch aus der Datenbank bestimmter Position gelöscht werden. Wenn es gelöscht ist, bekommt Volley die Antwort Okay. Wenn Volley Okay bekommen hat, dann soll auch das Element aus der List View gelöscht werden.
Habe nur was über RecyleView, Array_List gelesen und feste Werte. Aber würde gerne das aus der ListView löschen und dann den BaseAdapter neu aktualliesieren.
Mein Code:
Und die Variablen:
und der BaseAdapter:
Die Frage ist natürlich, wie lösche ich ein Item, wenn Volley sagt okay, nachdem der Nutzer es angeklickt hat.
Da ich aktuell mich auf BaseAdapter einstellen möchte, da ich ja das evtl. bei meinem App Store auch brauchen kann, das gewissene Apps aus der ListView gelöscht werden muss, weil die gesperrt werden(Jeden Illegaler Anwendung oder Schädliche), Würde ich gerne wissen, wie man dann das löschen kann, wenn man die Positon kennt. In dem jetzigen Fall, wenn man drauf geklickt hat...
ICh hoffe, ihr könnt mir irgendwie weiterhelfen und ich danke mich mal bei euch =)
Habe nur was über RecyleView, Array_List gelesen und feste Werte. Aber würde gerne das aus der ListView löschen und dann den BaseAdapter neu aktualliesieren.
Mein Code:
Java:
LinkVisitCustomBaseAdapter linkVisitCustomBaseAdapter = new LinkVisitCustomBaseAdapter(getActivity(), id, linkTitel, link, download);
listView.setAdapter(linkVisitCustomBaseAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long lo) {
String url = link[position];
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
Log.e("Exception Thread:" , e.toString());
} finally {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(context, "Finish, now Volley", Toast.LENGTH_SHORT).show();
final String url = "----";
RequestQueue queue = Volley.newRequestQueue(context);
StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if (response.equals("okay")){
}else{
AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.AlertDialogTheme);
View view = LayoutInflater.from(context).inflate(R.layout.layout_error_dialog, (ConstraintLayout)getActivity().findViewById(R.id.layoutDialogContainer));
builder.setView(view);
((TextView)view.findViewById(R.id.textTitle)).setText("Fehlgeschlagen");
((TextView)view.findViewById(R.id.textView_error)).setText("Leider ist was Fehlgeschlagen.\nInformieren Sie den Support,\nwenn es öfters passiert.");
((Button)view.findViewById(R.id.buttonAction)).setText(getString(R.string.okay));
((ImageView)view.findViewById(R.id.image_error)).setImageResource(R.drawable.ic_error);
final AlertDialog alertDialog = builder.create();
alertDialog.setCancelable(false);
view.findViewById(R.id.buttonAction).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alertDialog.dismiss();
startActivity(new Intent(context, login.class));
}
});
if (alertDialog.getWindow() != null){
alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(0));
}
alertDialog.show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("LinkAktuVolleyError", error.toString());
}
}){
@Nullable
@Override
protected Map<String, String> getParams() throws AuthFailureError {
HashMap<String, String> param = new HashMap<>();
return param;
}
};
queue.add(stringRequest);
}
});
}
}
});
thread.start();
}
});
Und die Variablen:
Code:
Integer[] id;
String[] linkTitel;
String[] link;
Integer[] download;
und der BaseAdapter:
Java:
public class LinkVisitCustomBaseAdapter extends BaseAdapter {
Context context;
Integer listID[];
String listTitel[];
String listLinks[];
Integer listDownload[];
LayoutInflater layoutInflater;
public LinkVisitCustomBaseAdapter(Context ctx, Integer[] id, String[] linkTitel, String[] link, Integer[] download){
this.context = ctx;
this.listID = id;
this.listTitel = linkTitel;
this.listLinks = link;
this.listDownload = download;
layoutInflater = LayoutInflater.from(ctx);
}
@Override
public int getCount() {
return listTitel.length;
}
@Override
public Object getItem(int position) {
return listTitel[position];
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = layoutInflater.inflate(R.layout.link_visit_listview, null);
TextView titel = convertView.findViewById(R.id.textView_listview_titelVisit);
TextView download = convertView.findViewById(R.id.textView_download_extra);
Log.e("Position Download", "" + listDownload[position]);
if(listDownload[position] == 2){
download.setVisibility(View.VISIBLE);
}else if(listDownload[position] == 1){
download.setVisibility(View.INVISIBLE);
}
titel.setText(listTitel[position]);
return convertView;
}
}
Die Frage ist natürlich, wie lösche ich ein Item, wenn Volley sagt okay, nachdem der Nutzer es angeklickt hat.
Da ich aktuell mich auf BaseAdapter einstellen möchte, da ich ja das evtl. bei meinem App Store auch brauchen kann, das gewissene Apps aus der ListView gelöscht werden muss, weil die gesperrt werden(Jeden Illegaler Anwendung oder Schädliche), Würde ich gerne wissen, wie man dann das löschen kann, wenn man die Positon kennt. In dem jetzigen Fall, wenn man drauf geklickt hat...
ICh hoffe, ihr könnt mir irgendwie weiterhelfen und ich danke mich mal bei euch =)