comment Listview d'Actualisation après la Suppression d'un élément sur l'événement Clic du Bouton dans android?

Je veux supprimer un élément de Liste, et à un moment de Rafraîchissement Listview après la suppression d'un élément. Comment possible?

Je suis en utilisant obtenez tous les éléments à l'aide de JSON l'Analyse de la base de données et supprimer un sélectionné un élément, cliquez sur le bouton. supprimer avec succès à partir de la base de données mais Listview pas d'actualiser à la fois. comment faire?

Je suis Json à l'aide de l'Analyse. pas de base de données locale.

Dans Ce cas, Comment faire pour actualiser Listview lors de la Suppression d'un Élément?
merci de me Guider.
Merci à l'Avance.

Mon Code est,
Detail.java Fichier

public class Detail extends Activity {
ListView lstDetail = null;
/** String */
String urlGetDetailData = null;
/** Declare another variable for Listview */
Adapter1 adapter1 = null;
ArrayList<Detail> myList = new ArrayList<Detail>();
/** Hashmap for ListView */
ArrayList<HashMap<String, String>> dataList = null;
/** JSON Node names */
public static final String TAG_MEMBER_ID = "mem_id";
public static final String TAG_ID = "id";
public static final String TAG_USER_ID = "userid";
public static final String TAG_STATUS = "Status";
@Override
protected void onCreate(Bundle savedInstanceState) {
//TODO Auto-generated method stub
super.onCreate(savedInstanceState);
onCreateActivity(R.layout.detail);
initializeWidgets();
}
private void initializeWidgets() {
/** ListView */
lstDetail = (ListView) findViewById(R.id.lstDetail);
urlGetDetailData = "http://example.com/getdata.php?id="
+ strId;
new GetDetailData().execute();
myList.remove(position);
Adapter1.this.notifyDataSetChanged();
}
/**
* Async task class to get json by making HTTP call
* */
private class GetDetailData extends AsyncTask<Void, Void, Void> {
JSONObject jsonobject;
JSONArray jsonarray;
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... arg0) {
dataList = new ArrayList<HashMap<String, String>>();
//Retrieve JSON Objects from the given URL address
jsonobject = JSONFunctions.getJSONfromURL(urlGetDetailData);
try {
//Locate the array name in JSON
jsonarray = jsonobject.getJSONArray("data");
for (int i = 0; i < jsonarray.length(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
jsonobject = jsonarray.getJSONObject(i);
//Retrive JSON Objects
map.put("mem_id", String.valueOf(jsonobject
.getString(TAG_MEMBER_ID)));
map.put("id",
jsonobject.getString(TAG_ID));
map.put("userid", jsonobject.getString(TAG_USER_ID));
map.put("Status", jsonobject.getString(TAG_STATUS));
dataList.add(map);
}
} catch (JSONException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
if (dataList.size() != 0) {
lstDetail.setVisibility(View.VISIBLE);
Adapter1 = new Adapter1(Detail.this,
dataList);
lstDetail.setAdapter(Adapter1);
} else {
lstDetail.setVisibility(View.GONE);
}
}
}
}

Et l'Adaptateur Classe,
Adapter1.java Fichier

public class Adapter1 extends BaseAdapter {
public ArrayList<HashMap<String, String>> arrData = null;
Context context = null;
LayoutInflater layoutInflater = null;
HashMap<String, String> getDetailData = new HashMap<String, String>();
/** String */
String strMemberId = null, urlDelete = null;
/** Constructor */
public Adapter1(Context context,
ArrayList<HashMap<String, String>> arrData) {
layoutInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.context = context;
this.arrData  = arrData;
}
@Override
public int getCount() {
return arrData.size();
}
@Override
public Object getItem(int position) {
return arrData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
convertView = layoutInflater.inflate(
R.layout.list_item, null);
viewHolder = new ViewHolder();
getData = arrData.get(position);
/** Initialize Widgets */
viewHolder.imgCancel = (ImageView) convertView
.findViewById(R.id.imgCancel);
viewHolder.imgCancel
.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
strMemberId = arrData.get(
position).get(
Detail.TAG_MEMBER_ID);
urlDelete = "http://example.com/delete.php?mem_id="
+ strMemberId;
new DeleteComments().execute();
}
});
/** TextView */
viewHolder.txtMemberId = (TextView) convertView
.findViewById(R.id.txtMemberId);
viewHolder.txtId = (TextView) convertView
.findViewById(R.id.txtId);
viewHolder.txtDesc = (TextView) convertView
.findViewById(R.id.txtDesc);
/** Set Value */
viewHolder.txtMemberId.setText(getDetailData 
.get(Detail.TAG_MEMBER_ID));
viewHolder.txtId.setText(getDetailData
.get(Detail.TAG_ID));
viewHolder.txtDesc.setText(getDetailData
.get(Detail.TAG_STATUS));
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
return convertView;
}
/** ViewHolder Class */
@SuppressLint("NewApi")
public static class ViewHolder {
ImageView imgCancel = null;
TextView txtMemberId = null, txtId = null,txtDesc = null;
}
public class DeleteComments extends AsyncTask<Void, Void, Void> {
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... arg0) {
ServiceHandler sh = new ServiceHandler();
String jsonStr = sh.makeServiceCall(urlDelete,
ServiceHandler.GET);
Log.d("Response : delete join comments", ">" + jsonStr);
return null;
}
protected void onPostExecute(Void result) {
super.onPostExecute(result);
};
}
}

detail.xml Fichier,

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/re/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<ListView
android:id="@+id/lstDetail"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</ListView>
</RelativeLayout>

list_item.xml fichier,

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/re/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:id="@+id/contentLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="vertical" >
<TextView
android:id="@+id/txtId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="111" />
<TextView
android:id="@+id/txtDesc"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<ImageView
android:id="@+id/imgCancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:src="@drawable/cancel" />
<TextView
android:id="@+id/txtMemberId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/txtUserEventId"
android:layout_alignBottom="@+id/txtUserEventId"
android:layout_alignParentLeft="true"
android:text="222" />
</RelativeLayout>
  • utilisation de l'adaptateur.notifyDataSetChanged();
  • dans votre coutume adaptateur appeler cette.notifyDataSetChanged(); lorsque vous effectuez des tâches de supprimer la fonctionnalité et la suppression de cet élément de liste de tableaux qui est fixé à l'adaptateur
  • Veuillez mettre à Jour dans mon code parce que Ce code fonctionne avec succès restant Listview Rafraîchir... Où est updatein mon code.
  • Avez-vous utilisé l'adaptateur.notifyDataSetChanged();?
  • Juste ajouter notifyDataSetChanged() dans postexecute.
  • Je suis à l'aide de supprimer l'Élément de la base de données avec succès, puis après en utilisant Comme ce arrayListDetailData.supprimer(position); DetailAdapter.c'.notifyDataSetChanged(); pour supprimer un élément à partir de listview puis supprimer le dernier point n'est pas de l'élément sélectionné de la liste. Les moyens de supprimer à partir de la dernière dans la liste. svp aidez-moi. comment faire supprimer l'élément sélectionné à partir de l'élément listview?
  • voir ma mise à jour de Question.
  • Je suis à l'aide de supprimer l'Élément de la base de données avec succès, puis après en utilisant Comme ce arrayListDetailData.supprimer(position); DetailAdapter.c'.notifyDataSetChanged(); pour supprimer un élément à partir de listview puis supprimer le dernier point n'est pas de l'élément sélectionné de la liste. Les moyens de supprimer à partir de la dernière dans la liste. svp aidez-moi. comment faire supprimer l'élément sélectionné à partir de l'élément listview? Voir ma mise à Jour de Question
  • vous souhaitez sélectionner la liste des articles 2 à max.vous avez un bouton supprimer pour supprimer tous les éléments sélectionnés dans la vue liste, suis de droite.
  • Aucune Supposons que j'ai 10 Articles dans Ma Listview alors je veux supprimer le Point N ° 4. donc, en Fait, supprimer le Point N ° 4 Mais Dans mon cas, supprimer le Point N ° 10. Sa suppression à partir de la Dernière. Puis Après avoir Supprimer le Point N ° 9 etc. Bouton supprimer Disponibles pour chaque élément separetly... Si je clique sur le Bouton Supprimer sur le Point N ° 5 puis supprimer le Point N ° 5 etc.
  • ok.lorsque vous cliquez sur annuler exécuter asyc tâche supprimer la ligne suis de droite.
  • vous avez la solution.
  • Oui. Mais Supprimer avec Succès à partir de la Base de données seul problème est dans la liste. et également obtenir la Position Correcte lors d'un Clic sur imgCancel le Bouton, mais seulement supprimer le Dernier Élément de Listview pas l'Élément sélectionné.et Aussi, je suis en utilisant arrData.supprimer(position); notifyDataSetChanged(); après avoir supprimer un élément à partir de la base de données.
  • déclarer un int pos; à l'échelle mondiale dans cette base de l'adaptateur de classe, lorsque vous cliquez sur le bouton annuler définir pos = position dans postexecute arrData.remove(pos);notifyDataSetChanged(); de l'essayer.
  • Je peux essayer aussi, mais rien de changer
  • mettre le journal pour obtenir la position au moment de la onclick et avant arrData.remove(pos) de la liste de case à obtenir la position correcte ou pas.
  • Oui je suis au Courant de la Position Correctement. et de mettre ce code dans le post excute de DeleteComments().execute de la classe.arrData.supprimer(curpos); Adapter1.notifyDataSetChanged(); ai-je le Droit? Si oui, alors quel est le problème dans ce code?
  • ok.vous avez obtenu la position actuelle correctement dans les deux cliquez sur l'événement et post exécutif suis de droite.
  • Oui Exactement...
  • quelqu'un peut-il aider stackoverflow.com/questions/28148618/...

InformationsquelleAutor Reena | 2014-11-26