2015-10-06 256 views
1

我按下按鈕時從gridview中刪除圖像。從gridview中刪除項目

圖像確實刪除正常,並且gridview也通過調用「adapter.notifyDataSetChanged();」更新。

當imageview被移除時,該位置旁邊的另一個圖像應該佔據其位置。發生這種情況,但這裏的圖像不會重新加載,因此只有一個空白區域?我怎樣才能得到這個imageview重新加載它的形象?

問題:enter image description here

這裏是我的gridadapter:

public class FavoriteMovieGridAdapter extends BaseAdapter { 
Context context; 
ArrayList<DataFavorites> List; 
FavoritesMovie fragment; 
private static LayoutInflater inflater = null; 
FavoriteMovieGridAdapter adapter = this; 


public FavoriteMovieGridAdapter(Context context, ArrayList<DataFavorites> List, FavoritesMovie fragment) { 
    this.context = context; 
    this.List = List; 
    this.fragment = fragment; 
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
} 



@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return List.size(); 
} 

@Override 
public Object getItem(int position) { 
    // TODO Auto-generated method stub 
    return position; 
} 

@Override 
public long getItemId(int position) { 
    // TODO Auto-generated method stub 
    return position; 
} 

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 

    // Avoid unneccessary calls to findViewById() on each row 
    final ViewHolder holder; 

    /* 
    * If convertView is not null, reuse it directly, no inflation 
    * Only inflate a new View when the convertView is null. 
    */ 

    if (convertView == null) { 
     convertView = inflater.inflate(R.layout.favorite_grid_item, null); 

     holder = new ViewHolder(); 
     holder.poster = (ImageView) convertView.findViewById(R.id.upcoming_image); 

     holder.editbutton = (ImageView) convertView.findViewById(R.id.delete_item); 
     // The tag can be any Object, this just happens to be the ViewHolder 
     convertView.setTag(holder); 
    } 
    else{ 

     // Get the ViewHolder back to get fast access to the TextView 
     // and the ImageView. 
     holder = (ViewHolder) convertView.getTag(); 

    } 


    final View finalConvertView = convertView; 

    final DataFavorites e; 
    new DataFavorites(); 
    e = List.get(position); 

    String url = String.valueOf(e.getUrl()); 

    // load image url into poster 

// Seems as if this doesn't run for the imageview next to this when this view is removed?    
    Picasso.with(context).load(url).fit().placeholder(R.drawable.movie_back).into(holder.poster); 

    // Create onclick and show edit button 

    convertView.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 


    // show edit button 
    holder.editbutton.setVisibility(View.VISIBLE); 

    YoYo.with(Techniques.FadeIn).duration(700).playOn(finalConvertView.findViewById(R.id.delete_item)); 



      // onclick edit button remove item and update gridview 
    holder.editbutton.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 

     YoYo.with(Techniques.ZoomOut).duration(700).playOn(finalConvertView.findViewById(R.id.favorite_relative)); 


     Handler handler = new Handler(); 
     handler.postDelayed(new Runnable() { 
         public void run() { 


     adapter.List.remove(e); 
     adapter.notifyDataSetChanged(); 


     // Delete specific movie from data base 
     DatabaseHandlerMovie db = new DatabaseHandlerMovie(context); 
     // Reading all movies 
     db.deleteMovie(e); 

      } 
        }, 1000); 




       } 
      }); 

      return false; 
     } 
    }); 


    return convertView; 
} 

static class ViewHolder { 
    ImageView poster; 
    ImageView editbutton; 
} 



} 

我的網格項目佈局:

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="vertical" 
android:id="@+id/favorite_relative" 
android:layout_centerHorizontal="true" 
android:gravity="center_horizontal"> 



<ImageView android:layout_width="123.3dp" 
    android:layout_height="185.3dp" 
    android:id="@+id/upcoming_image" 
    android:scaleType="fitXY" /> 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/delete_item" 
    android:src="@drawable/ic_remove_circle_outline_white_24dp" 
    android:tint="@color/colorPrimaryDark" 
    android:clickable="true" 
    android:visibility="gone" 
    android:layout_alignRight="@+id/upcoming_image" 
    android:layout_alignEnd="@+id/upcoming_image"/> 

    </RelativeLayout> 

我的網格佈局:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
tools:context=".Favorites" 
android:background="#FFFFFF" 
android:focusableInTouchMode="true"> 



<GridView 

    android:layout_width="match_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/movies_gridlayout" 
    android:paddingRight="-1dp" 
    android:paddingEnd="-1dp" 
    android:numColumns="3" 
    android:background="#ffffff" 
    android:visibility="invisible"/> 



<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:id="@+id/favorite_none" 
    android:text="No favorite movies found" 
    android:textSize="15sp" 
    android:visibility="gone" 
    android:textColor="@color/SecondaryText" 
    /> 


<ProgressBar 
     android:id="@+id/progressBar" 
     style="?android:attr/progressBarStyleLarge" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:visibility="gone" 
     > 
    </ProgressBar> 
    </FrameLayout> 
+0

這取決於你如何保存你的圖像..如果它是一個SQL數據庫,你會從SQL數據庫這樣的刪除:http://stackoverflow.com/問題/ 7510219 /刪除行功能於sqlite的功能於機器人#7510399和你的GridView只需要調用notifyDataChanged()之類如下所示:http://stackoverflow.com/questions/4438128/how-to-refresh-a -gridview31162450 – edwinj

+0

哦,等等..對不起,我沒有完全閱讀你的問題..你的情況,它是與你的GridView佈局..能否請您也表明你的GridView佈局.. – edwinj

+0

好了,所以我已經添加了我的網格佈局這個問題。有什麼和這個有關的嗎? – Mat0

回答

0

打開了3R d黨的lib造成這個:

YoYo.with(Techniques.ZoomOut).duration(700).playOn(finalConvertView.findViewById(R.id.favorite_relative));