2017-05-29 139 views
-2

我在我的應用程序中創建了一個ListView,並且列表中的每個項目都對應着某個地方。我想成爲可點擊的項目,當用戶點擊該地點的名稱時,會出現地圖位置。我怎樣才能做到這一點?我怎樣才能使列表中的項目可點擊並轉到不同的鏈接?listview中可點擊的項目 - Android Studio

這是我的活動:

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); 

    } 
} 

,這是我的xml文件:

<?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> 

,這是我的XML適配器:

<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

另請參閱文檔...此處也顯示'setOnItemClick'。 https://developer.android.com/reference/android/widget/ListView.html –

回答

0

Luiz的回答是正確的。但是你並不特別需要實現這個功能。你可以做,而不是一個新的實例:

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

其中P1是你的ListView,P2是點擊視圖(查找文本和內改變它很有用),P3是在ListView位置,P4的唯一ID。

0

您應該使用一個名爲InterfaceOnItemClickListener,所以改變你的Activity來實現接口:

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 

     } 
}