2014-07-26 4 views
0

Im 간단한 피드 리더 앱을 사용 중입니다. 내 주요 활동에서 나는 모든 항목을 보여주는 listview 있습니다. 각 행에 나는 해당 항목을 저장하기위한 imagebutton을 가지고 있으며 사용자가 imagebutton의 이미지를 변경해야합니다 (트위터의 fav 아이콘과 같음). 그러나 변경되지 않습니다! 스크롤 한 후에 변경 사항이 관찰됩니다!listview에서 imagebutton 리소스를 변경하십시오.

이것은 내 행 레이아웃입니다.

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:descendantFocusability="blocksDescendants" > 

<TextView 
    android:id="@+id/tvListViewItemTitle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginRight="15dp" 
    android:layout_marginTop="15dp" 
    android:text="@string/listview_item_title" 
    android:textSize="25dp" /> 

<TextView 
    android:id="@+id/tvListViewItemText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignRight="@+id/tvListViewItemTitle" 
    android:layout_below="@+id/tvListViewItemTitle" 
    android:layout_marginTop="20dp" 
    android:text="@string/listview_item_text" 
    android:textSize="18dp" /> 

<TextView 
    android:id="@+id/tvListViewItemTime" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignRight="@+id/tvListViewItemText" 
    android:layout_below="@+id/tvListViewItemText" 
    android:layout_marginTop="22dp" 
    android:paddingTop="5dp" 
    android:text="@string/listview_item_time" /> 

<ImageButton 
    android:id="@+id/ibListViewItemSave" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignTop="@+id/tvListViewItemTime" 
    android:layout_marginLeft="20dp" 
    android:paddingTop="11dp" 
    android:src="@drawable/icon_save_story_2x" 
    android:background="@null" /> 
이 내 사용자 정의 어댑터 클래스입니다. if else 후 당신의 onClick

public class FeedListAdapter extends ArrayAdapter<FeedItem> { 
private final Activity context; 
private final List<FeedItem> list; 

public FeedListAdapter(Activity context, List<FeedItem> list) { 
    super(context, R.layout.feed_listview_item_type1, list); 
    this.context = context; 
    this.list = list; 
} 

static class ViewHolder { 
    TextView tvTitle; 
    TextView tvText; 
    TextView tvTime; 
    ImageButton ibSave; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View rowView = convertView; 

    if (rowView == null) { 
     LayoutInflater inflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     rowView = inflater.inflate(R.layout.feed_listview_item_type1, parent,false); 
     // configure view holder 
     ViewHolder holder = new ViewHolder(); 

     holder.tvTitle = (TextView)rowView.findViewById(R.id.tvListViewItemTitle); 
     holder.tvText = (TextView)rowView.findViewById(R.id.tvListViewItemText); 
     holder.tvTime = (TextView)rowView.findViewById(R.id.tvListViewItemTime); 
     holder.ibSave = (ImageButton)rowView.findViewById(R.id.ibListViewItemSave); 

     rowView.setTag(holder); 
    } 
    // fill data 
    ViewHolder holder = (ViewHolder) rowView.getTag(); 
    final FeedItem feedItem = list.get(position); 
    holder.tvTitle.setText(feedItem.getTitle()); 
    holder.tvText.setText(feedItem.getText()); 
    holder.tvTime.setText(feedItem.getTime()); 


    if(feedItem.isSave()) holder.ibSave.setImageResource(R.drawable.icon_saved_story_2x); 
    else holder.ibSave.setImageResource(R.drawable.icon_save_story_2x); 

    final String msg = " "+(position+1); 
    holder.ibSave.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      if(feedItem.isSave()){ 
       feedItem.setSave(false); 
       Toast.makeText(context, 
         msg+"deleted", Toast.LENGTH_SHORT).show(); 
       //holder.ibSave.setImageResource(R.drawable.icon_save_story_2x); 
      }else{ 
       feedItem.setSave(true); 
       Toast.makeText(context, 
         msg+"saved", Toast.LENGTH_SHORT).show(); 
       //holder.ibSave.setImageResource(R.drawable.icon_saved_story_2x); 
      } 

     } 
    }); 
    return rowView; 
} 

}

답변

0

전화 notifyDataSetChanged.

현재 FeedListAdapter은 사용자가 일부 변경을 수행했음을 알지 못합니다. list

관련 문제