2009-10-30 3 views
1

내 ListView에 3000 개가 넘는 행이 있습니다. 그리고 내가 ListView에서 데이터를 필터링하기 위해 EditText를 타이핑하면 천천히 실행됩니다. 여기 내 코드를 봐필터 데이터를 편집 할 때 EditText 필터가 느리게 실행됩니다.

final TextWatcher textChecker = new TextWatcher() { 
    public void afterTextChanged(Editable s) {} 

    public void beforeTextChanged(CharSequence s, int start, int count, 
        int after) {} 

    public void onTextChanged(CharSequence s, int start, int before, 
        int count) { 

     filterData(search.getText().toString()); 

    } 
}; 

private void filterData(String textinput){ 
    mCursor = mHelperData.searchData(textinput); 
    startManagingCursor(mCursor); 

    String[] from = new String[]{ MyData.KEY_ROWID, 
      MyData.KEY_TITLE, MyData.KEY_DESCRIPTION }; 

    int[] to = new int[]{ R.id.id, R.id.title, R.id.description, R.id.icon };  
    setListAdapter(new MyAdapter(this, R.layout.list_row, mCursor, from, to)); 
} 

커서로 데이터를 검색하는 것이 좋지는 않습니다. 그렇다면이 경우 연설을 개선 할 수있는 더 좋은 방법이 있습니까?

답변

3

사용자가 스크롤하거나 3000 행을 필터링하지 않아도되는 탐색 패턴을 제시하십시오. 행 RAM, 연속 AC 전원 4GB의, 19 "LCD, 풀 사이즈 키보드 및 표준 마우스와 쿼드 코어 데스크탑에 매우 성가신 것를 통해 또는 필터링 3000 스크롤

.

유사 하나의 페이지에서 3000 개의 항목을 덤프 할 수있는 웹 사이트가 없으며 웹 브라우저를 사용하는 사람들은 많은 경우 전체 화면, 키보드 및 마우스를 사용하고 있습니다. 예를 들어, 3000 행을 범주로 나누고 사용자가 범주를 먼저 선택하게하십시오.

+0

+1 개발자가 * 사용자 *에게 가장/가장 쉬운 점을 생각하도록 돕기 위해 개발자 – I82Much

+0

예, 사용자가 전화 화면으로 3000 행을 스크롤하는 것은 정말 어렵습니다. 그러나 여기 내 응용 프로그램은 "검색"목적으로 사용됩니다. 어쨌든, 당신의 대답은 저에게 영감을주고 제 생각 엔 뭔가 다른 것을 만들 수 있다고 생각합니다. 정말 고맙습니다! – Dennie

+0

응용 프로그램이 검색 용일 경우 3000 개의 항목을 목록에 넣지 마십시오. 대신 검색 필드를 제공하고 검색을 실행하고 결과를 표시하십시오. 예를 들어, 안드로이드 마켓을 검색하면 마켓에있는 모든 애플리케이션의 ListView를 가져 와서 필터링하지 않습니다. 대신 검색 필드를 가져 와서 일치하는 결과를 보여주는 ListView 만 가져옵니다. – CommonsWare

1

Marks 답변에 추가하기 - 최근에 같은 문제가 발생하여 Androidguys.com의 came up with tutorial에 "끝없는"목록을 코딩하는 방법을 보여줍니다.

관련 문제