Cómo hacer que BaseAdapter muestre la aplicación para Android AlertDialog
¿Cómo puedo hacer que el botón en BaseAdapter en listView muestre alertDialog, lo intenté pero dejó de funcionar de forma inesperada (RunTime Error) mi código se muestra a continuación.
cualquier sugerencia
gracias por adelantado
Monerah
==== después de la Actualización =====================
<code>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); } } </code>
// ================================================ ============================
<code>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; } // ======================================================================== } </code>