我有一个带有RecycleView的Android活动,我在这个RecycleView上实现了一个ClickEvent。
如果我尝试点击一个项目,我想显示一个与另一个RecycleView的对话框。
所以这是我的活动代码:
public class ResultActivity extends AppCompatActivity {
private List<Result> lista= new ArrayList<Result>();
private RecyclerView recyclerView;
private RecyclerView recyclerViewResult;
private ResultsAdapter pAdapter;
private ResultXResultAdapter prAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
try{
super.onCreate(savedInstanceState);
setContentView(R.layout.results_activity);
recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
ResultDAO manager = new ResultDAO(this);
lista=manager.getResults();
pAdapter = new ResultsAdapter(lista, new ResultsAdapter.OnItemClickListener() {
@Override
public void onItemClick(Result item) {
try{
final Dialog dialog = new Dialog(ResultActivity.this);
dialog.setContentView(R.layout.result_modal);
recyclerViewResult = (RecyclerView) findViewById(R.id.recycler_result_view);
dialog.setTitle("Parametri");
prAdapter = new ResultXResultAdapter(item.getListaParametri());
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
recyclerViewResult.setLayoutManager(mLayoutManager);
recyclerViewResult.setItemAnimator(new DefaultItemAnimator());
recyclerViewResult.setAdapter(prAdapter);
dialog.show();
}catch(Exception e){
Log.e("","");
}
}
});
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(mLayoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(pAdapter);
// prepareMovieData();
}catch(Exception e){
}
}
}
如果我运行我的应用程序并尝试单击一个项目,则我有null异常。问题出在这行代码中:
recyclerViewResult = (RecyclerView) findViewById(R.id.recycler_result_view);
在此代码之后,recyclerViewResult为null,但不应为null。
答案 0 :(得分:2)
RecyclerView
返回null
的原因是因为您在没有正确的视图前缀的情况下调用findViewById
。由于您在Dialog
中使用自定义布局,因此应使用LayoutInflater
来扩充布局,然后使用膨胀的视图对象查找属于RecyclerView
的{{1}}像这样:
dialog