如何使用RecycleView显示对话框

时间:2016-05-03 15:53:15

标签: android

我有一个带有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。

1 个答案:

答案 0 :(得分:2)

RecyclerView返回null的原因是因为您在没有正确的视图前缀的情况下调用findViewById。由于您在Dialog中使用自定义布局,因此应使用LayoutInflater来扩充布局,然后使用膨胀的视图对象查找属于RecyclerView的{​​{1}}像这样:

dialog