2013-06-07 1 views
0

내가 가지고있는 Android 앱에는 사용자가 행 요소를 변경할 수있는 몇 가지가 있습니다. 예를 들어 하나의 버튼에는 사용자 의견에 투표 할 수있는 버튼이 있습니다 (Facebook의 '좋아요'또는 Google+의 +1).스크롤 후 목록보기의 변경 사항 저장

사용자가 버튼을 클릭하면 드로어 블 이미지가 변경됩니다. 이것은 잘 작동하고 있습니다. 문제 :

사용자가 아래로 스크롤 한 다음 다시 올라 오면 상태가 저장되지 않고 원래 드로어 블로 돌아갑니다.

public View getView(int position, View convertView, ViewGroup parent) { 
    final ViewHolder holder; 
    LayoutInflater inflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    if (convertView == null) { 

     dCBlue = (Drawable) getContext().getResources().getDrawable(
        R.drawable.ic_comment_blue); 
     dCGray = (Drawable) getContext().getResources().getDrawable(
        R.drawable.ic_comment_gray); 

     convertView = inflater.inflate(R.layout.review_layout, parent, 
     holder = new ViewHolder(); 
      holder.b2 = (Button) convertView.findViewById(R.id.bReview2); 
      convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
     convertView.setOnCreateContextMenuListener(null); 
    } 

     // later on down 

    Review r = getItem(position); 
    votedOn = r.wasVoted; 
    final Drawable dVBlue = (Drawable) getContext().getResources() 
       .getDrawable(R.drawable.ic_upvote_blue); 
    final Drawable dVGray = (Drawable) getContext().getResources() 
       .getDrawable(R.drawable.ic_upvote_gray); 

    if (votedOn.equals("1")) { 
     holder.b2.setCompoundDrawablesWithIntrinsicBounds(null, null, dVBlue, null); 
     holder.b2.setTag(R.drawable.review_button_press); 
    } else { 
     holder.b2.setCompoundDrawablesWithIntrinsicBounds(null, null,dVGray, null); 
     holder.b2.setTag(R.drawable.review_button); 
    } 

    holder.b2.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 

     if (holder.b2.getTag().equals(R.drawable.review_button)) { 
      holder.b2.setCompoundDrawablesWithIntrinsicBounds(null, null, dVBlue, null); 
    holder.b2.setTag(R.drawable.review_button_press); 

     } else { 
    holder.b2.setCompoundDrawablesWithIntrinsicBounds(null, null, dVGray, null); 
     holder.b2.setTag(R.drawable.review_button); 

     } 
     bVote = holder.b2; 
     new HelpfulTask().execute(passing); 


    }); 
return convertView; 

가}

내가이 순서가 정렬 한 마 : 여기

내가 adaptergetView() 방법의 코드를 어떻게입니까?

답변

1

리뷰 개체를 업데이트 할 수 없습니다. 투표를 나타 내기 위해 행을 나타내는 객체를 업데이트해야하며 뷰 바인딩이이를 처리해야합니다.

+0

이 업데이트는 어떻게 수행됩니까? 그리고 어디? – KickingLettuce

+0

행에 대한 이미지를 업데이트 할 때 onclick에서 행을 나타내는 리뷰 객체에 정보를 어떻게 든 커밋해야합니다. 다음에이 행이 나타날 때 getItem (위치)을 수행하면 그 객체에 의해 표시된 투표 상태가 나타납니다 – jqpubliq

+0

오! 알았다! 고마워 ... 올바른 표시. – KickingLettuce

관련 문제