2016-07-25 4 views
1

У меня есть приложение, загружающее listview на основе запроса к базе данных. В каждом элементе listview есть текстовое представление и несколько кнопок. Поэтому я создал пользовательский адаптер. Моя проблема в том, что я пытаюсь сделать диалоговое окно, появляющееся при нажатии кнопки в списке, но я не знаю, как вызвать диспетчер фрагментов из адаптера listview.Диалог создания появляется после нажатия кнопки элемента списка

DanceAdapter.java

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // Get the data item for this position 
     final OneDancer oneDancer = getItem(position); 
     // Check if an existing view is being reused, otherwise inflate the view 
     if (convertView == null) { 
       //Sign-In Activity 
      if(type==1) { 


      }else if (type==2) 
      { 

       Log.v("DancerAdapter","item_dj_dancer Loaded"); 

      } 
      //VIP/Dances Adapter 
      else if(type==3) { 

       convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_services, parent, false); 

       final Button button4 = (Button)convertView.findViewById(R.id.button4); 

       final TextView counterTextView = (TextView)convertView.findViewById(R.id.textView10); 

       final Button button6 = (Button)convertView.findViewById(R.id.button6); 



       button4.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 

         DialogFragment newFragment = new SignInActivity.ConfirmDancerDialog(); 
         newFragment.show(new getFragmentManager(), "Dancer Confirmed"); 

         button4.setVisibility(View.INVISIBLE); 
         button6.setVisibility(View.VISIBLE); 
         counterTextView.setVisibility(View.VISIBLE); 

        } 
       }); 




      } 

     } 

Вот код метода в деятельности, которая заполнит ListView.

Услуги. Java

// Parsing of dancers 

public void parseDancerList(String response) { 

Log.v("SignInActivity","parseDancerList"); 
XMLParser parser = new XMLParser(); 

Document doc = parser.getDomElement(response); // getting DOM element 

NodeList nl = doc.getElementsByTagName("DANCERS"); 

DancerAdapter adapter = new DancerAdapter(this,oneDancerArrayList,3); 

Log.v("response ", "Dancer Count " + nl.getLength()); 
// looping through all item nodes <item> 
for (int i = 0; i < nl.getLength(); i++) { 
    // creating new HashMap 

    Element e = (Element) nl.item(i); 
    Log.v("response ", "Dancers " + parser.getValue(e, "NAME")); 

    OneDancer newDancer = new OneDancer(parser.getValue(e,"POSITION"), 
      parser.getValue(e,"NAME"), 
      parser.getValue(e,"AVAILABLE"), 
      null, 
      null, 
      null, 
      null, 
      null, 
      null); 

    adapter.addAll(newDancer); 
    listView.setAdapter(adapter); 
    adapter.notifyDataSetChanged(); 




} 

}

+0

простите меня, но я вроде не в полной мере получить то, что вы имеете в виду, почему вы хотите получить доступ к менеджеру фрагмента ? Если вам нужен экземпляр «AlertDialog», вам нужен только контекст, вы можете передать его в конструкторе вашего адаптера. –

+0

Простите мое невежество. Я копировал код из другой области в моем приложении, которая отображает диалог. Однако его вызывают непосредственно из деятельности. Можете показать мне пример того, что вы имеете в виду? – TWeeKeD

+0

np :), я добавил что-то, проверьте, надеюсь, это поможет –

ответ

0

Хорошо, я предполагаю, что это просто, что вы устали, что вы не понимаете, как это сделать, Потому что это просто на самом деле, по крайней мере, если я не хватает чего-то, и я m не устал сам xd. вот код:

в деятельности:

DancerAdapter adapter = new DancerAdapter(this,oneDancerArrayList,3, getSupportFragmentManager()); 

в вашем DancerAdapter:

private static FragmentManager fragmentManager; 

public DancerAdapter(...,FragmentManager fragmentManager) { 
    ... 
    this.fragmentManager = fragmentManager;//now you have a reference to it 
} 
+0

Это было просто. Спасибо! – TWeeKeD

+0

yw, поскольку я сказал, что это просто вопрос усталости, я уверен, что вы сами это знали :) –