Comment faire de BaseAdapter montrer AlertDialog Application android
Comment puis-je faire sur le bouton de BaseAdapter dans listView montre alertDialog, j'ai essayé, mais il a Cessé de travailler inattendu (RunTime Error) mon code est indiqué ci-dessous .
toute suggestion
merci d'avance
Monerah
====après la mise à Jour =====================
import java.util.List;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MyCasesListAdapter extends BaseAdapter {
private Context context;
private List<MyCaseClass> listOfCases;
//TODO delete it not imp.
public MyCasesListAdapter() {
super();
}
public MyCasesListAdapter(Context context, List<MyCaseClass> listPhonebook) {
this.context = context;
this.listOfCases = listPhonebook;
}
public int getCount() {
return listOfCases.size();
}
public Object getItem(int position) {
return listOfCases.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup viewGroup) {
MyCaseClass entry = listOfCases.get(position);
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.mypage_row, null);
}
//this is row items..
//Set the onClick Listener on this button
Button ConfExpandRegion = (Button) convertView.findViewById(R.id.expand);
Button Cancelb = (Button) convertView.findViewById(R.id.cancelCase);
TextView tvCase = (TextView) convertView.findViewById(R.id.mypage_name);
//To be a clickable button
ConfExpandRegion.setFocusableInTouchMode(false);
ConfExpandRegion.setFocusable(false);
//For Dialog
AlertDialog alertDialog = new AlertDialog.Builder(MyCasesListAdapter.this);
alertDialog.setTitle("Conformation");
alertDialog.setMessage("Are you sure you want to do ???");
ConfExpandRegion.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//TODO Auto-generated method stub
alertDialog.setButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//Some code
//ConfExpandRegion.setEnabled(false);
}
});
alertDialog.setButton2("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//here you can add functions
//Do nothing
}
});
alertDialog.setIcon(android.R.drawable.ic_dialog_alert);
alertDialog.show();
}});
//To be a clickable button
Cancelb.setFocusableInTouchMode(false);
Cancelb.setFocusable(false);
Cancelb.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//TODO Auto-generated method stub
MyCaseClass entry = (MyCaseClass) v.getTag();
listOfCases.remove(entry);
//listPhonebook.remove(view.getId());
notifyDataSetChanged();
}
});
//Set the entry, so that you can capture which item was clicked and
//then remove it
//As an alternative, you can use the id/position of the item to capture
//the item
//that was clicked.
ConfExpandRegion.setTag(entry);
Cancelb.setTag(entry);
//btnRemove.setId(position);
return convertView;
}
public void onClick(View view) {
MyCaseClass entry = (MyCaseClass) view.getTag();
listOfCases.remove(entry);
//listPhonebook.remove(view.getId());
notifyDataSetChanged();
}
private void showDialog(MyCaseClass entry) {
//Create and show your dialog
//Depending on the Dialogs button clicks delete it or do nothing
}
public void add(MyCaseClass myCaseClass) {
//TODO Auto-generated method stub
listOfCases.add(myCaseClass);
}
}
//============================================================================
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
public class MyPage extends Activity {
Button createForm;
Button ConfExpandRegion, Cancelb;
String ExpandMsg, CancelMsg;
boolean b;
MyCaseClass mycase;
TextView tvCase;
AlertDialog alertDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mypage);
//Moving to anther activity
createForm = (Button) findViewById(R.id.creat_new_formbtn);
createForm.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent j = new Intent(MyPage.this, CreateNewForm.class);
startActivity(j);
}
});
//============================================================================================
//for list
ListView list = (ListView) findViewById(R.id.mypage_list);
list.setClickable(true);
final List<MyCaseClass> listOfPhonebook = new ArrayList<MyCaseClass>();
MyCasesListAdapter adapter = new MyCasesListAdapter(this, listOfPhonebook);
for (MyCaseClass m : All_Static.getMyCaseList())
adapter.add(new MyCaseClass(m));
//after fill the adapter.. assign the list to the adapter
list.setAdapter(adapter);
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View view, int position, long index) {
System.out.println("sadsfsf");
;
}
});
list.setAdapter(adapter);
//========================================================================================
}
public void sendSMS(String number, String msg) throws Exception {
if (!b) {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(number, null, msg, null, null);
}
b = true;
}
//========================================================================
}
Avez-vous cette réponse?
OriginalL'auteur Monerah | 2012-04-26
Vous devez vous connecter pour publier un commentaire.
Êtes-vous sûr à 100% lorsque vous passez "ce" en tant que paramètre lors de la création de votre Carte que vous êtes de passage de l'Activité?
Une bonne façon de le vérifier est de modifier l'application comme ceci:
Ajouter une Activité paramètre à votre carte
Créer votre boîte de dialogue d'alerte comme ça...
Enfin, appeler le constructeur de votre carte comme ça...
Explication: Vous n'avez probablement pas besoin de passer dans l'Activité et du Contexte de votre adaptateur de base, mais je l'ai fait de sorte que vous pouvez garder tout le reste est pour le moment. Je ne sais pas si "ça", lorsque vous êtes à l'instanciation de votre carte, est en fait une activité. J'ai défini le 3e paramètre dans le constructeur comme "Activité" à force de passer d'une Activité. Vous obtiendrez des erreurs de compilation si vous essayez de passer à quelque chose qui n'est pas et de l'activité, de sorte qu'il devrait vous aider.
Aussi, je viens de remarquer, mais le problème est probablement que votre code mis à jour est encore en train de créer l'AlertDialog à l'aide de MyCasesListAdapter.ce que le contexte, qui n'est pas une activité.
OriginalL'auteur Gophermofur
OriginalL'auteur Praveen
Première chose que votre alertDialog n'est pas encore initialisé.. donc NPE .. et lorsque vous le créez à l'intérieur d'un Adaptateur, assurez-vous d'utiliser
activity context and not ApplciatioContext
la ligne ci-dessus ne devraient pas être dans la classe de niveau.. il doit être à l'intérieur
getView()
méthode... et l'utilisation de votre activité instance de Contexte.. quelque chose commenameOfYourActivity.this
montrer que le code de trop.. et accepter certaines réponses..
ok malade regarde ma mise à jour plz
un coup d'oeil à stackoverflow.com/questions/5292451/...
merci pour ur répondre
OriginalL'auteur ngesh
Vous devez utiliser un
AlertDialog.Builder
de construire unAlertDialog
.Jetez un oeil à l'exemple de AlertDialogSamples.java
OriginalL'auteur Rajesh