我在向AlertDialog添加微调器时遇到问题。
我正在使用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) {
}
问题在代码行中出现:(来自myRecyclerItemClickListener类)
if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
mListener.onItemClick(childView, view.getChildPosition(childView));
}
答案 0 :(得分:0)
在Spinner初始化中缺少put视图
正确的是
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();
}
}));