2017-05-29 138 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 

     } 
}