2

* strong text *當我點擊列表項時,方法OnItemClick不會被調用。我正在嘗試通過另一個活動來顯示有關「AnaliseEstrutural」的更多信息。列表中將列出Brunton或Clar爲ehBrunton所定義的價值。然後,當用戶點擊一個項目時,它會顯示關於「AnaliseEstrutural」的更多信息。但它沒有通過該方法。OnItemClick沒有在名單片段中調用[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(new OnItemClickListener()..'。爲什麼會這樣呢? – Raghunandan

+0

[RESOLVED]我把這個方法放在了analisesList.setOnItemClickListener(new OnItemClickListener()在onActivityCreated intead onCreateView ...這就是將被調用的方法,當一個項目被點擊 – 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 for?

parent.removeView(analisesList); 

也應該不是你在onCreateView而不是analisesList返回整個視圖?

我猜做如下填寫解決問題

  1. 刪除 「parent.removeView(analisesList);」
  2. return analisesList;
  3. 刪除實現onOtemClickListener(你正在創建的內annonymous類如通過Raghunandan提及)
+2

[已解決]我已經把方法analisesList.setOnItemClickListener(新的OnItemClickListener()內onActivityCreated intead onCreateView,但我沒有聲譽aswer我的問題 – LeandroC

+0

它沒有parent.removeView(analisesList)doenst工作; – LeandroC

+0

它會返回一個異常 – LeandroC