2017-01-16 63 views
0

我有一個ExpendableListView,我嘗試顯示名稱,並點擊,去url,但我不知道的方法。ExpendableListView:添加名稱,並鏈接

這是我的嘗試:

List<String> CompagnieReguliere = new ArrayList<String>(); 
for (HashMap<String,String> e : lesInfosMaritimes){ 
    String nom = e.get("nom"); 
    final String url = e.get("url"); 
    CompagnieReguliere.add(nom); 

    View.setOnItemClickListener buttonListener = new View.setOnItemClickListener(){ 
     @Override 
     public void onClick(View v) { 
      Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
      startActivity(browserIntent); 
     } 
    }; 

    expListView.setOnItemClickListener(buttonListener); 
} 

我的所有代碼:

public class MainInformation extends Fragment{ 
ExpandableListAdapter listAdapter; 
ExpandableListView expListView; 
List<String> listDataHeader; 
HashMap<String, List<String>> listDataChild; 
private ArrayList<HashMap<String,String>> lesInfosCroisieres,lesInfosMaritimes; 
private Infos infosCroisieres, infosMaritimes; 
private static boolean connected; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
    // par la suite il faudra ajouter, en pluys de la liste des compagnies etc.etc.etc. 
    // rajouter le click qui redirige sur l'url; 
    // et peut etre le logo des compagnies. 

    View rootView=inflater.inflate(R.layout.information_layout,container,false); 

    // get the listview 
    expListView = (ExpandableListView) rootView.findViewById(R.id.lvExp); 

    // preparing list data 
    prepareListData(); 

    listAdapter = new ExpandableListAdapter(getActivity(), listDataHeader, listDataChild); 

    // setting list adapter 
    expListView.setAdapter(listAdapter); 



    return rootView; 
} 
private void prepareListData() { 

    try { 
     infosCroisieres = new Infos(); 
     infosMaritimes = new Infos(); 

     infosCroisieres.execute("http://oleane1.sudcorse.cci.fr/cciacs/dataports/compagnies.csv"); 
     infosMaritimes.execute("http://oleane1.sudcorse.cci.fr/cciacs/dataports/compagniescroisiere.csv"); 

     infosCroisieres.get(); 
     infosMaritimes.get(); 

     lesInfosCroisieres = infosCroisieres.getArrayHashCSV(); 
     lesInfosMaritimes = infosMaritimes.getArrayHashCSV(); 
    } 
    catch (Exception e){ Log.i("recup1",e.toString()); } 

    listDataHeader = new ArrayList<String>(); 
    listDataChild = new HashMap<String, List<String>>(); 

    // Adding child data 
    listDataHeader.add("Compagnies Croisières/Cruises Companies"); 
    listDataHeader.add("Compagnies Maritimes/Regular Companies"); 
    listDataHeader.add("Contact Port Corse-du-Sud/Contact South Corsica's Ports"); 



    // Adding child data 
    List<String> CompagnieCroisiere = new ArrayList<String>(); 
    for (HashMap<String,String> e : lesInfosCroisieres){ 
     Log.i("data1", e.get("nom")); 
     Log.i("data1", e.get("url")); 
     CompagnieCroisiere.add(e.get("nom")); 
    } 
    /* CompagnieCroisiere.setOnItemClickListener(new AdapterView.OnItemClickListener(){ 
     public void onItemClick(AdapterView<?> parent,View view,int position,long id) 
     { 
      Toast.makeText(getApplicationContext(),"Click ListItem Number "+position, Toast.LENGTH_LONG).show();} 
    });*/ 

    // Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
    // startActivity(browserIntent); 

    List<String> CompagnieReguliere = new ArrayList<String>(); 
    for (HashMap<String,String> e : lesInfosMaritimes) { 
     String nom = e.get("nom"); 
     final String url = e.get("url"); 
     CompagnieReguliere.add(nom); 

     View.setOnItemClickListener(new OnItemClickListener() { 
      // handle a click from the size-sorted list. (this is NOT the checkbox click) 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
       startActivity(browserIntent); 
      } 
     }); 

    } 



    List<String> PortSudCorse = new ArrayList<String>(); 
    PortSudCorse.add("Port d'Ajaccio"); 
    PortSudCorse.add("Port de Bonifacio"); 
    PortSudCorse.add("Port de Porto-Vecchio"); 
    PortSudCorse.add("Port de Propriano"); 


    listDataChild.put(listDataHeader.get(0), CompagnieCroisiere); // Header, Child data 
    listDataChild.put(listDataHeader.get(1), CompagnieReguliere); 
    listDataChild.put(listDataHeader.get(2), PortSudCorse); 

} 

public void goToUrl (String url){ 
    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
    startActivity(browserIntent); 
} 
} 

我用Fragment,這一點,可能是一個問題?

回答

0

使用下面的代碼,它可能會幫助你。

View.setOnItemClickListener(new OnItemClickListener() { 
    // handle a click from the size-sorted list. (this is NOT the checkbox click) 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
     startActivity(browserIntent); 
    } 
}); 
+0

謝謝,但我有一個erreor,第一LIGNE是紅色.. 無法解決方法setOnItemClickListener –

+0

我已經加了我的所有代碼 –