Android 如何使用RecycleView显示对话框
我有一个带有RecycleView的Android活动,我在这个RecycleView上实现了一个ClickEvent 如果我尝试单击一个项目,我想显示一个与另一个RecycleView的对话框 这是我的活动代码:Android 如何使用RecycleView显示对话框,android,Android,我有一个带有RecycleView的Android活动,我在这个RecycleView上实现了一个ClickEvent 如果我尝试单击一个项目,我想显示一个与另一个RecycleView的对话框 这是我的活动代码: public class ResultActivity extends AppCompatActivity { private List<Result> lista= new ArrayList<Result>(); private Recyc
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){
}
}
}
在此代码之后,recyclerViewResult为null,但不应为null。您的
RecyclerView
返回null
的原因是您调用的findViewById
没有正确的视图前缀。因为您在对话框中使用的是自定义布局
,所以应该使用LayoutInflater
对布局进行充气,然后使用充气视图对象查找属于对话框的回收视图
,如下所示:
View dialogView=inflater.inflate(R.layout.result\u model,null);
recyclerViewResult=(RecyclerView)dialogView.findViewById(R.id.recycler\u结果\u视图)
dialog.setContentView(dialogView)
您的RecyclerView
返回null
的原因是您调用的findViewById
没有正确的视图前缀。因为您在对话框中使用的是自定义布局
,所以应该使用LayoutInflater
对布局进行充气,然后使用充气视图对象查找属于对话框的回收视图
,如下所示:
View dialogView=inflater.inflate(R.layout.result\u model,null);
recyclerViewResult=(RecyclerView)dialogView.findViewById(R.id.recycler\u结果\u视图)
setContentView(dialogView)
我真的建议在您的案例中使用fragment dialog。我真的建议在您的案例中使用fragment dialog。
recyclerViewResult = (RecyclerView) findViewById(R.id.recycler_result_view);