2017-05-29 4 views
-2

Ich habe eine ListView in meiner App erstellt und jedes Element der Liste entspricht einem bestimmten Ort. Ich möchte zu den Elementen werden, auf die geklickt werden kann. Wenn der Nutzer auf den Namen des Ortes klickt, wird ein Kartenstandort angezeigt. Wie kann ich das machen? Wie kann ich die Elemente der Liste anklickbar machen und zu verschiedenen Links führen?Anklickbare Elemente in Listenansicht - Android Studio

Dies ist meine Aktivität:

public class Guia extends BaseActivity { 

    String[] predios={"HVET - Hospital Veterinário", "FE - Faculdade de Educação", "BSA SUL - Bloco de Salas de Aula Sul", "BAES - Bloco de Salas de Aula Eudoro de Sousa", 
    "FACE - Faculdade de Administração, Contabilidade e Economia", "FD - Faculdade de Direito", "PAT - Pavilhão Anísio Teixeira", 
    "PJC - Pavilhão João Calmon", "IPOL/IREL - Instituto de Ciências Políticas/Relações Internacionais", "CIC/EST - Prédio de Ciência da Computação e Estatística", 
    "RU - Restaurante Universitário", "IDA - Instituto de Artes", "ICC - Instituto Central de Ciência", 
    "CDT - Centro de Tecnologia", "CPD - Centro de Informática", "FM/FS - Faculdade de Medicina/Saúde", "CEU - Casa do Estudante", "Centro Olímpico"}; 

    ListView s; 


    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.guia); 

     s = (ListView) findViewById(R.id.predios); 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.predios, R.id.textosiglas, predios); 
     s.setAdapter(adapter); 

    } 
} 

und dies ist meine XML-Datei:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#EBEBEB" 
    > 

    <ListView 
     android:background="@android:color/white" 
     android:layout_margin="10dp" 
     android:id="@+id/predios" 
     android:dividerHeight="10dp" 
     android:divider="#EBEBEB" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentTop="true" 
     /> 
</RelativeLayout> 

und das ist mein xml-Adapter:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:orientation="horizontal" 
    android:layout_margin="10dp" 
    android:background="@android:color/white" 
    android:layout_height="wrap_content"> 

    <ImageView 
     android:id="@+id/imagemguia" 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     app:srcCompat="@drawable/guia" 
     android:layout_margin="10dp" 
     android:layout_gravity="center_horizontal|top" 
     /> 

     <TextView 
      android:id="@+id/textosiglas" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="15dp" 
      android:text="" 
      android:textColor="@android:color/black" 
      android:textSize="17sp" /> 


</LinearLayout> 
+0

Siehe auch Dokumentation ... 'setOnItemClick' wird dort auch angezeigt. https://developer.android.com/reference/android/widget/ListView.html –

Antwort

0

Luiz Antwort ist richtig. Aber Sie müssen die Funktion nicht unbedingt implementieren. Sie können stattdessen eine neue Instanz machen:

myListView.setOnItemClickListener(new OnItemClickListener(){ 
@Override 
Public void onItemClick(AdapterView<?> p1, View p2, int i, long p4) 
    { 
    // Your stuff here 
    } 
}); 

Wo p1 Ihre Listview ist, p2 ist es, die angeklickt Ansicht (nützlich für Text zu finden und es im Innern zu ändern), p3 ist die Position, in der Listenansicht, p4 die eindeutige ID.

0

Sie sollten eine Interface verwenden benannt OnItemClickListener, ändern Sie also Ihre Activity, um die Schnittstelle zu implementieren:

public class Guia extends BaseActivity implements AdapterView.OnItemClickListener{ 

     String[] predios={"HVET - Hospital Veterinário", "FE - Faculdade de Educação", "BSA SUL - Bloco de Salas de Aula Sul", "BAES - Bloco de Salas de Aula Eudoro de Sousa", 
     "FACE - Faculdade de Administração, Contabilidade e Economia", "FD - Faculdade de Direito", "PAT - Pavilhão Anísio Teixeira", 
     "PJC - Pavilhão João Calmon", "IPOL/IREL - Instituto de Ciências Políticas/Relações Internacionais", "CIC/EST - Prédio de Ciência da Computação e Estatística", 
     "RU - Restaurante Universitário", "IDA - Instituto de Artes", "ICC - Instituto Central de Ciência", 
     "CDT - Centro de Tecnologia", "CPD - Centro de Informática", "FM/FS - Faculdade de Medicina/Saúde", "CEU - Casa do Estudante", "Centro Olímpico"}; 

     ListView s; 


     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.guia); 

      s = (ListView) findViewById(R.id.predios); 

      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.predios, R.id.textosiglas, predios); 
      s.setAdapter(adapter); 

      //This is class that implements the interface. 
      s.setOnItemClickListener(this); 
     } 

     //This method is implemented using the interface 
     @Override 
     public void onItemClick (AdapterView<?> parent, View view, int position,long id){ 
     //Trate o click de cada item aqui dentro usando a variavel position 

     } 
} 
Verwandte Themen