2015-12-05 2 views
1

У меня есть проблема с добавлением счетчика в мой AlertDialog.Как добавить Spinner в AlertDialog в RecyclerItemClickListener

Я пользуюсь списком RecyclerView, и когда я нажимаю на элемент RecyclerView, AlertDialog открыт, и в этом AlertDialog есть Spinner. Но у моего AlertDialog есть проблемы для открытия. этот вопрос является:

12-05 14:12:37.695 17204-17204/br.com.appoint.android E/AndroidRuntime﹕ FATAL EXCEPTION: main 
java.lang.NullPointerException 
     at br.com.appoint.android.activity.AgendaActivity$1.onItemClick(AgendaActivity.java:125) 
     at br.com.appoint.android.listener.RecyclerItemClickListener.onInterceptTouchEvent(RecyclerItemClickListener.java:39) 
     at android.support.v7.widget.RecyclerView.dispatchOnItemTouch(RecyclerView.java:2117) 
     at android.support.v7.widget.RecyclerView.onTouchEvent(RecyclerView.java:2246) 
     at android.view.View.dispatchTouchEvent(View.java:7690) 

Следуйте ниже мое AgendaAcitivty класса (только часть alertDialog) и мой класс RecyclerItemClickListener.

Я не знаю, в чем проблема, не могли бы вы мне помочь? благодаря

AgendaActivity.class

mRecyclerViewResult.addOnItemTouchListener(new RecyclerItemClickListener(AgendaActivity.this, 
      new RecyclerItemClickListener.OnItemClickListener() { 
       @Override 
       public void onItemClick(View view, int position) { 

        final AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext(), position); 
        LayoutInflater layoutInflater = getLayoutInflater(); 
        View view1 = layoutInflater.inflate(R.layout.confirmar_consulta_layout, null, true); 

        List<String> list = new ArrayList<String>(); 
        list.add("Item 1"); 
        list.add("Item 3"); 
        list.add("Item 3"); 

        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(view.getContext(), 
          android.R.layout.simple_spinner_item, list); 
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
        mSpinner1.setAdapter(dataAdapter); 

        builder.setView(view1); 

        builder.setPositiveButton(getString(R.string.confirm), new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          } 
        }); 
        builder.setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          dialog.dismiss(); 
         } 
        }); 
        builder.show(); 
        //Toast.makeText(AgendaActivity.this, "click no item do recycleview", Toast.LENGTH_LONG).show(); 
       } 
      })); 

Следуйте мой RecyclerItemClickListener класс

общественного класса RecyclerItemClickListener реализует RecyclerView.OnItemTouchListener {

private OnItemClickListener mListener; 

    public interface OnItemClickListener { 
     public void onItemClick(View view, int position); 
    } 

    GestureDetector mGestureDetector; 

    public RecyclerItemClickListener(Context context, OnItemClickListener listener) { 
     mListener = listener; 
     mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() { 
     @Override public boolean onSingleTapUp(MotionEvent e) { 
      return true; 
     } 
    }); 
} 

@Override 
public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) { 
    View childView = view.findChildViewUnder(e.getX(), e.getY()); 
    if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) { 
     mListener.onItemClick(childView, view.getChildPosition(childView)); 
    } 
    return false; 
} 

@Override 
public void onTouchEvent(RecyclerView rv, MotionEvent e) { 
} 

@Override 
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { 

} 

Проблема occors в Thie строке кода: (из класса myRecyclerItemClickListener)

if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) { 
     mListener.onItemClick(childView, view.getChildPosition(childView)); 
    } 
+0

'надуть (R.layout.confirmar_consulta_layout, NULL, истина),' поэтому вы надувать ваш взгляд на нулевой родитель – pskink

+0

Не работает, я думаю, что моя проблема в адаптере. –

+0

что «не работает»? – pskink

ответ

0

отсутствует вид положить в инициализации Spinner

Правильной является

mRecyclerViewResult.addOnItemTouchListener(new RecyclerItemClickListener(AgendaActivity.this, 
      new RecyclerItemClickListener.OnItemClickListener() { 
       @Override 
       public void onItemClick(View view, int position) { 

        final AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext()); 
        LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
        View v = layoutInflater.inflate(R.layout.confirmar_consulta_layout, null, true); 
        mSpinner1 = (Spinner) v.findViewById(R.id.spinner1); 
        builder.setView(v); 

        builder.setPositiveButton(getString(R.string.confirm), new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
         } 
        }); 
        builder.setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          dialog.dismiss(); 
         } 
        }); 
        builder.show(); 

        List<String> list = new ArrayList<String>(); 
        list.add("Unimed"); 
        list.add("SulAmerica"); 
        list.add("Bradesco Saude"); 

        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(v.getContext(), 
          android.R.layout.simple_spinner_item, list); 
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

        mSpinner1.setAdapter(dataAdapter); 
        //Toast.makeText(AgendaActivity.this, "click no item do recycleview", Toast.LENGTH_LONG).show(); 
       } 
      })); 
Смежные вопросы