2013-06-25 2 views
0

나는 쉼표로 구분 된 단어 목록 인 tags라는 값을 가지고 있습니다. 이것을 멋지게 디자인 된 "태그 - 버튼"에 넣고 싶습니다.simpleadapter를 사용하여 목록보기에서 사용자 지정보기를 구현하는 더 나은 방법은 무엇입니까?

아래가 작동합니다. 라인 ((LinearLayout) view).removeAllViews(); 내가 여기 setOnScrollListener()

어떤 제안을 "모범 사례"로 더 많은 행을로드 한 후마다 adapter.notifyDataSetChanged();가 호출되는 태그를 여러 번 추가하거나, 적어도 더 좋은 찾고 해결책이 아니다에 대한 추한 수정처럼 보인다 그러나 ?

adapter = new SimpleAdapter(activity,data, 
    R.layout.list_transactions, 
    new String[] {"comment", "amount","date","tags","category"}, 
    new int[] { R.id.comment, R.id.amount,R.id.date,R.id.tags_container,R.id.category } 
); 


SimpleAdapter.ViewBinder binder = new SimpleAdapter.ViewBinder() { 
    @Override 
    public boolean setViewValue(View view, Object object, String value) { 
    //Log.d(TAG,"view.toString()= "+ view.toString()); 
    if (view.getId() == R.id.tags_container) 
    { 

     String[] tags = value.split(","); 

     ((LinearLayout) view).removeAllViews(); 
     for (String tag : tags) { 
     View v = createTagView(activity.getLayoutInflater(),tag); 
     ((LinearLayout) view).addView(v); 

     } 
     return true; 
    } 
    return false; 
    } 
}; 
+0

만약 내가 당신이라면 나는 행에 대해 가질 수있는 태그의 평균 개수에 대한 가정을하고 행 레이아웃의 시작부터 그 수만큼의 태그 뷰를 추가 할 것입니다 (주로/조회수는 매회). 그런 다음'ViewBinder'에서 나는 그 행에 대한 태그의 정확한 수에 따라 추가보기를 숨기거나 추가합니다 (그리고 아마 일부를 제거 할 것입니다). – Luksprog

답변

0

대체 솔루션은 표시되는 뷰의 태그에 포함 된 문자열 세트를 유지하는 것입니다. 뷰가 추가되어야하는 경우 (set.contains (태그))

결정하는 경우 대신 제거 모든 뷰

를 사용한다. 다시 이것은 단지 대안적인 해결책 일뿐입니다. 나는 상대적 성능에 대해 확신하지 못한다.

관련 문제