2015-01-28 3 views
1

Я пытаюсь сделать ListView, чтобы перейти к позиции, я перепробовал все возможные функции, но не все работаюткак прокрутить ListView к определенной позиции в андроида программно

для более подробного объяснения кода во-первых: я положил маркеры на карте затем вызовите список адаптер вторых L, если пользователь нажмет маркер на карте представление списка должен показать выбранную позицию маркера щелкнул

private void Putting_places_on_Map(final List<PlaceModel> Places) { 
    // TODO Auto-generated method stub 
    for (int i = 0; i < Places.size(); i++) { 
     LatLng place_loc = new LatLng(Double.parseDouble(Places.get(i) 
       .getLatitude()), Double.parseDouble(Places.get(i) 
       .getLongitude())); 
     map.addMarker(new MarkerOptions().position(place_loc).icon(
       BitmapDescriptorFactory 
         .fromResource(R.drawable.glossygreencirclemarker))); 
    } 

    // when marker clicked 
    map.setOnMarkerClickListener(new OnMarkerClickListener() { 

     @Override 
     public boolean onMarkerClick(Marker marker) { 
      // TODO Auto-generated method stub 
      LatLng PlaceLocation = marker.getPosition(); 
      int selected_marker=-1; 
      for (int i = 0; i < Places.size(); i++) { 
       if (PlaceLocation.latitude == Double.parseDouble(Places 
         .get(i).getLatitude()) 
         && PlaceLocation.longitude == Double 
            .parseDouble(Places.get(i).getLongitude())) { 
        selected_marker=i; 
       } 
      } 
      Update_List_Places(Places, selected_marker); 
      return false; 
     } 
    }); 

} 
private void Update_List_Places(List<PlaceModel> Places, 
     int selected_marker_position) { 
    // TODO Auto-generated method stub 
    list_places_returned = true; 
    ListPlacesNearbyAdapter placesNearbyAdapter = new ListPlacesNearbyAdapter(
      (ArrayList<PlaceModel>) Places, activity, 
      selected_marker_position); 
    placesNearbyAdapter.notifyDataSetChanged(); 

    if(selected_marker_position != -1){ 

     //listview_nearby_locations.setSelection(selected_marker_position); 
     //listview_nearby_locations.smoothScrollToPosition(selected_marker_position); 
     //listview_nearby_locations.setSelectionFromTop(selected_marker_position, 100); 
     int y= selected_marker_position*40; 
     listview_nearby_locations.scrollTo(0,y); 
    } 
    listview_nearby_locations.setAdapter(placesNearbyAdapter); 
} 

посмотреть рис enter image description here

+0

'smoothScrollToPosition' –

+0

Вы можете использовать setSelection() –

+0

Уже я использовал его, но не работает –

ответ

3

Попробуйте это :

listview_nearby_locations.setSelection(9); 
+1

не работаю я попробовал –

1

Используйте следующий код ..

context.yourListView.smoothScrollToPosition(10); 
+0

Можете ли вы предоставить некоторые более объяснение? – Paco

+0

проверить мое редактирование на вопрос –

1

спасибо, ребята я использовал этот метод

Runnable runnable = new Runnable() { 

     @Override 
     public void run() { 
      // TODO Auto-generated method stub 
      if(selected_marker_position != -1){     
       listview_nearby_locations.setSelection(selected_marker_position); 
      } 
     } 
    }; 
    runnable.run(); 
Смежные вопросы