2016-12-19 2 views
0

Ich versuche, den alertDialog bei "Fertig" zu schließen, indem ich auf der Soft-Tastatur klicke, nachdem der Benutzer die Eingabe eingegeben hat.Ich benutze die Methode ablis(), aber sie funktioniert nicht. Ich muss auf die Seite alertDialog klicken, um zu entkommen. Dies geschieht auch aus einer benutzerdefinierten Adapterklasse, nicht aus einer Aktivität.So schließen Sie den alertDialog vom benutzerdefinierten Adapter

import android.content.Context; 
import android.support.annotation.NonNull; 
import android.support.v7.app.AlertDialog; 
import android.text.InputType; 
import android.view.KeyEvent; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.inputmethod.EditorInfo; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.ImageButton; 
import android.widget.ImageView; 
import android.widget.TextView; 
import android.widget.Toast; 

import java.util.ArrayList; 


class CustomAdapter extends ArrayAdapter{ 

    public CustomAdapter(Context context, ArrayList choreText) { 
     super(context, R.layout.custon_listview_row, choreText); 
    } 

    @NonNull 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater myInflater = LayoutInflater.from(getContext()); 
     View customView = myInflater.inflate(R.layout.custon_listview_row, parent, false); 
     ImageButton imageButton = (ImageButton) customView.findViewById(R.id.imageButton_ID); 
     final TextView textView = (TextView) customView.findViewById(R.id.textView_ID); 
     final EditText input = new EditText(getContext()); 
     final AlertDialog OptionDialog = new AlertDialog.Builder(getContext()).create(); 


     //makes textView clickable 
     textView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //what happens when textView is clicked 

       final AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); 
       // put aler dialog box logic here 
       builder.setTitle("Enter new chore"); 
       builder.setView(input); 
       input.setInputType(InputType.TYPE_CLASS_TEXT); 
       input.setImeOptions(EditorInfo.IME_ACTION_DONE); 
       //checks if "Done" button on soft keyboard is clicked 
       input.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
        @Override 
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
         if(actionId==EditorInfo.IME_ACTION_DONE){ 
          //what happens when "Done" is clicked 
          textView.setText(input.getText().toString()); 
          OptionDialog.dismiss(); 
         } 
         return false; 
        } 
       }); 



       builder.show(); 
      } 
     }); 


     imageButton.setImageResource(R.drawable.clock); 

     return customView; 
    } 
} 
+0

In Textview klicken listner Sie neuer Dialog während in Editor listner erstellen Sie ein anderes –

+0

@Rachit Solanki Sie entlassen Dank! Genau was es war. –

Antwort

0

versuchen, dies in onClick:

//comment this line 
//final AlertDialog OptionDialog = new AlertDialog.Builder(getContext()).create(); 

    //makes textView clickable 
    textView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //what happens when textView is clicked 

      final AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); 
      AlertDialog OptionDialog = builder.create(); 
      // put aler dialog box logic here 
      builder.setTitle("Enter new chore"); 
      builder.setView(input); 
      input.setInputType(InputType.TYPE_CLASS_TEXT); 
      input.setImeOptions(EditorInfo.IME_ACTION_DONE); 
      //checks if "Done" button on soft keyboard is clicked 
      input.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
       @Override 
       public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
        if(actionId==EditorInfo.IME_ACTION_DONE){ 
         //what happens when "Done" is clicked 
         textView.setText(input.getText().toString()); 
         OptionDialog.dismiss(); 
         //send true as the event has occured 
         return true; 
        } 
        return false; 
       } 
      }); 
      builder.show(); 
     } 
    }); 
+0

danke aber hat nicht funktioniert. –

Verwandte Themen