2011-09-23 5 views
0

현재 시간을 기준으로 목록보기의 특정 부분을 얻는 데 약간의 도움이 필요합니다. 다음과 같은 문자열로 시간 목록보기가 있습니다 : "09:30" - "10:00" - "10:45". 디지털 시계를 사용하고 있습니다. 하나의 활동에 현재 시간을 표시하고 현재 시간을 기준으로 해당 목록보기의 특정 부분을 표시하려고합니다. 예 :ListView 안드로이드의 특정 부분을 보여주세요

그것은 10:30 그리고 내가 좋아하는 10:30보다 큰 목록보기 항목을 표시하려면 : 10:45, 10:55 등을 등

어떤 제안은 어떻게 할까?

+1

당신은 무엇을하려고하는지 더 자세하게 설명 할 수 있습니까 – ap400200

+0

저는 시간으로 목록보기를 가지고 있고 현재 시간에 따라 다른 항목을 보여주고 싶습니다. –

+1

listview에서 setPosition (int pos)를 호출하지 않는 이유는 어디에 pos가 현재 시간의 위치와 일치합니까? – slayton

답변

1

데이터를 어떻게 관리하는지 잘 모르겠습니다. 각 항목이 Comparable 인터페이스를 구현하는 Time 개체에 있고 모든 데이터가 List<Time> 인 것으로 가정합니다. 또한 ListViewList<Time>에서 빌드 한 ArrayAdapter으로 백업되고 Time[]으로 백업되어 있다고 가정합니다. (MVC 용어에서 List<Time> 당신의 모델이 될 것이라고는 ListView 뷰 것, 그리고 Activity 클래스는 컨트롤러가 될 것입니다.) 다음 코드는 데이터로 ListView 채우는 데 사용될 수

:

private void updateTimes(List<Time> list) { 
    Time[] times = new Time[list.size()]; 
    list.toArray(times); 
    mListView = (ListView) findViewById(R.id.listview); 
    mListView.setAdapter(new ArrayAdapter<Time>(this, R.layout.listitem, times)); 
} 

10:30 이후의 시간 만 표시하도록 목록을 필터링하려면이 작업을 수행 할 수 있습니다 (List<Time> mAllTimes이 마스터 목록이고, Time 클래스의 생성자가 String 인 경우)) :

private void filterTime(String onOrAfter) { 
    Time time = new Time(onOrAfter); 
    List<Time> filtered = new ArrayList<Time>(); 
    for (Time t : mAllTimes) { 
     if (t.compareTo(time) >= 0) { 
      filtered.add(t); 
     } 
    } 
    updateTimes(filtered); 
} 

으로 전화를 걸면 목록이 10:30 이후의 시간으로 만 제한됩니다. updateTimes(mAllTimes)을 호출하면 필터되지 않은 전체 목록이 표시됩니다.

관련 문제