2017-07-04 11 views
-2

我使用一个字符串ArrayList和字符串arrayAdapter来填充的ListView,这是我的xml文件:listview.setOnItemSelectedListener不起作用

<LinearLayout 
       android:id="@+id/llHoursD" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical" 
       android:descendantFocusability="blocksDescendants" 
       android:visibility="visible" 
       android:weightSum="1">       

       <TextView 
        android:id="@+id/tvDay" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="15dp" 
        android:layout_toRightOf="@+id/ivName" 
        android:background="@null" 
        android:enabled="false" 
        android:gravity="center_horizontal" 
        android:inputType="textPersonName" 
        android:text="Fecha Seleccionada" 
        android:textColor="@color/category" 
        android:textColorHint="@color/category" 
        android:visibility="visible" 
        android:textSize="17sp" />  

      <ImageView 
       android:layout_width="match_parent" 
       android:layout_height="2dp" 
       android:layout_marginTop="10dp" 
       android:scaleType="centerCrop" 
       android:src="@drawable/separator" />  

      <ListView 
       android:id="@+id/lvReservationTime" 
       android:layout_width="match_parent" 
       android:layout_height="163dp" 
       android:divider="@null" 
       android:dividerHeight="8dp" 
       android:layout_marginTop="8dp" 
       android:visibility="visible" 
       android:layout_weight="1.99"> 
      </ListView>  

      </LinearLayout> 

这是布局,其中TextView的是在列表位于

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <TextView 
     android:id="@+id/txtItemAva" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 

而且这是在该片段中的代码

listHourAvali = new ArrayList<>(); 
      adapterListHourAvali = new ArrayAdapter<String>(getActivity(),R.layout.detail_list_reservation,R.id.tvAvailiHours,listHourAvali); 
      mLvReservationTime.setAdapter(adapterListHourAvali); 

      mLvReservationTime.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
       @Override 
       public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

        Toast.makeText(getActivity(),"Prueba",Toast.LENGTH_LONG).show(); 
       } 

       @Override 
       public void onNothingSelected(AdapterView<?> parent) { 

       } 
      }); 

列表填充在另一种方法中,问题是按列表中的项目不会进入setOnItemSelectedListener。这里有什么问题?

+0

[安卓定制的可能的复制listview,setOnItemSelectedListener不工作](https://stackoverflow.com/questions/3630468/android-custom-listview-setonitemselectedlistener-not-working) – Selvin

回答

1

你必须要小心,选择某种东西是不同于点击某种东西的行为。

看到:OnItemSelectedListener VS OnItemClickedListener

如果你想要做一些动作时,点击(=选择!)列表项,那么你应该使用onClickListener:

mLvReservationTime.setOnItemClickListener(new OnItemClickListener() 
{ 
    @Override 
    public void onItemClick(AdapterView<?> adapter, View v, int position, 
     long arg3) 
    { 
     // do what you intend to do on click of listview row 
     Toast.makeText(getActivity(),"Prueba", Toast.LENGTH_LONG).show();  
    } 
});