2

* сильный текст * Когда я нажимаю элемент в списке, метод OnItemClick не называется ben. Я пытаюсь вызвать другое действие, чтобы показать дополнительную информацию об этом «AnaliseEstrutural». Что будет в списке, это значение Brunton или Clar, определенное для ehBrunton. Затем, когда пользователь нажимает на элемент, он будет получать информацию об этом «AnaliseEstrutural». Но метод не проходит.OnItemClick не вызывается в списке Fragment [RESOLVED]

вот код:

public class AnalisesPonto extends ListFragment implements OnItemClickListener{ 

private ArrayList<AnaliseEstrutural> analises; 
AnalisesDAO andao; 
String idPonto; 
private View view; 
private ListView analisesList; 
private AnalisesAdapter analisesAdapter; 
private boolean ehBrunton; 
private Intent i; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setRetainInstance(true); 

    idPonto = getArguments().getString("id"); 

    andao = new AnalisesDAO(getActivity().getApplicationContext()); 
    analises = andao.relatorioAnalises(idPonto); 
    ehBrunton = true; 
    i = new Intent(getActivity().getApplicationContext(), DadosAnalises.class); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 


    view = inflater.inflate(R.layout.analises_ponto_layout, null); 

    analisesList = (ListView) view.findViewById(android.R.id.list); 

    analisesAdapter = new AnalisesAdapter(getActivity().getApplicationContext(), true); 

    for (int i = 0; i < analises.size(); i++) { 
     analisesAdapter.add(analises.get(i)); 
    } 

    analisesList.setAdapter(analisesAdapter); 

    ViewGroup parent = (ViewGroup) analisesList.getParent(); 
    parent.removeView(analisesList); 
    analisesList.setOnItemClickListener(new OnItemClickListener() 
    { 
     @Override public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3) 
     {   
      Bundle extra = new Bundle(); 
      extra.putBoolean("radio", ehBrunton); 
      extra.putString("tipo_est", analises.get(position).getTipo()); 
      extra.putString("codigo", analises.get(position).getCodigo()); 
      if(ehBrunton) { 
       extra.putString("brun_clar", analises.get(position).getBrunton()); 
      } else { 
       extra.putString("brun_clar", analises.get(position).getClar()); 
      } 
      extra.putString("azimute", analises.get(position).getAzimute()); 
      extra.putString("direcao", analises.get(position).getDirecao()); 
      extra.putString("quadrante", analises.get(position).getQuadrante()); 
      extra.putString("sentido", analises.get(position).getSentido()); 
      extra.putString("descricao",analises.get(position).getDescricao()); 
      extra.putString("mergulho", analises.get(position).getMergulho()); 
      extra.putString("familia", analises.get(position).getFamilia()); 
      i.putExtra("analise", extra); 
      startActivity(i); 
     } 
    }); 




    return analisesList; 
} 
} 

Компоновка из списка:

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" > 

      <ListView 
      android:id="@android:id/list" 
      android:layout_width="fill_parent" 
      android:layout_height="match_parent" > 
     </ListView> 
    </LinearLayout> 

А вот Компоновка элемент списка

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/med_angular" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
    </LinearLayout> 
+2

Удалить этот 'инвентарем OnItemClickListener'. У вас есть анонимный внутренний класс. 'parent.removeView (analisesList)' вы удаляете список, а затем вызываете 'analisesList.setOnItemClickListener (новый OnItemClickListener() ..' почему это так? – Raghunandan

+0

[RESOLVED] Я поместил метод analisesList.setOnItemClickListener (новый OnItemClickListener() внутри onActivityCreated intead onCreateView ... Thats метод, который будет вызываться при щелчке элемента. – LeandroC

ответ

4

[РЕШЕНО] Поместите метод analisesList.setOnItemClickListener(new OnItemClickListener()внутриonActivityCreated вместо onCrateView

@Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onActivityCreated(savedInstanceState); 
     analisesList.setOnItemClickListener(new OnItemClickListener() 
     { 
      @Override public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3) 
      {   
       Bundle extra = new Bundle(); 
       extra.putBoolean("radio", ehBrunton); 
       extra.putString("tipo_est", analises.get(position).getTipo()); 
       extra.putString("codigo", analises.get(position).getCodigo()); 
       if(ehBrunton) { 
        extra.putString("brun_clar", analises.get(position).getBrunton()); 
       } else { 
        extra.putString("brun_clar", analises.get(position).getClar()); 
       } 
       extra.putString("azimute", analises.get(position).getAzimute()); 

       extra.putString("direcao", analises.get(position).getDirecao()); 
       extra.putString("quadrante", analises.get(position).getQuadrante()); 
       extra.putString("sentido", analises.get(position).getSentido()); 
       extra.putString("descricao",analises.get(position).getDescricao()); 
       extra.putString("mergulho", analises.get(position).getMergulho()); 
       extra.putString("familia", analises.get(position).getFamilia()); 
       i.putExtra("analise", extra); 
       startActivity(i); 
      } 
     }); 
    } 
0

Что это removeView для?

parent.removeView(analisesList); 

Также не следует ли возвращать весь вид в onCreateView вместо analisesList?

Я думаю, выполнив следующую заливку исправить проблемы

  1. удалить "parent.removeView (analisesList);"
  2. return analisesList;
  3. удалить реализует onOtemClickListener (Вы создаете внутренний annonymous класс, как упомянуто Raghunandan)
+2

[ПОСТАНОВИЛ] Я поместил метод analisesList.setOnItemClickListener (новый OnItemClickListener() внутри onActivityCreated intead onCreateView, но у меня нет репутации aswer my вопрос – LeandroC

+0

И это doenst работать без parent.removeView (analisesList); – LeandroC

+0

Это вернет исключение – LeandroC