2016-05-03 3 views
0

Ich habe eine Android-Aktivität mit einem RecycleView und ich habe ein ClickEvent in diesem RecycleView implementiert.Wie kann ich einen Dialog mit RecycleView zeigen

Wenn ich versuche, auf ein Element zu klicken, möchte ich einen Dialog mit einem anderen RecycleView anzeigen.

Das ist also mein Aktivitätscode:

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){ 
     } 
    } 
} 

Wenn ich meine Anwendung ausführen und ich versuche, auf einem Artikel zu klicken, ich null Ausnahme habe. Das Problem ist in dieser Zeile Code:

recyclerViewResult = (RecyclerView) findViewById(R.id.recycler_result_view); 

nach diesem Code, der recyclerViewResult null ist, sollte aber nicht null sein.

+0

ich wirklich empfehlen Verwenden Sie in Ihrem Fall den Fragmentdialog. – Amir

Antwort

2

Der Grund, warum Ihre RecyclerViewnull zurückgibt, liegt daran, dass Sie findViewById ohne das richtige Ansichtspräfix aufrufen. Weil Sie mit einem benutzerdefinierten Layout in Ihrem Dialog Sie eine LayoutInflater verwenden sollte das Layout dann verwenden, um die aufgeblasene Ansicht Objekt aufzublasen die RecyclerView zu finden, wie dies in der dialog gehört:

View dialogView = inflater.inflate(R.layout.result_modal, null); recyclerViewResult = (RecyclerView) dialogView.findViewById(R.id.recycler_result_view) dialog.setContentView(dialogView)

Verwandte Themen