xml文件android
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"app
xmlns:tools="http://schemas.android.com/tools"ide
android:layout_width="match_parent"佈局
android:layout_height="match_parent" >this
<GridViewspa
android:id="@+id/gridView".net
android:layout_width="match_parent"code
android:layout_height="wrap_content"xml
android:numColumns="4" >get
</GridView>
</RelativeLayout>
activity代碼
package com.example.longdemo;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.GridView;
/**
* GridView長按改變佈局,實現長按某一個,全部項都顯示刪除的圖標
* @author weicai
*
*/
public class MainActivity extends Activity implements OnItemLongClickListener {
private GridView mGridView;
private GridViewAdapter mAdapter;
private boolean isShowDelete = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mGridView = (GridView) findViewById(R.id.gridView);
mGridView.setOnItemLongClickListener(this);
mAdapter = new GridViewAdapter(MainActivity.this, new String[] { "你好",
"你好", "你好", "你好", "你好", "你好", "你好" }, new int[] {
R.drawable.avatar_fish, R.drawable.avatar_fish,
R.drawable.avatar_fish, R.drawable.avatar_fish,
R.drawable.avatar_fish, R.drawable.avatar_fish,
R.drawable.avatar_fish });
mGridView.setAdapter(mAdapter);
}
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
if (isShowDelete) {
isShowDelete = false;
} else {
isShowDelete = true;
}
mAdapter.setIsShowDelete(isShowDelete);//調用適配器裏的方法,並傳入參數
return true;
}
}
gridview適配器代碼:
package com.example.longdemo;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class GridViewAdapter extends BaseAdapter {
private String names[];
private int icons[];
private Context mContext;
private TextView name_tv;
private ImageView img;
private View deleteView;
private boolean isShowDelete;// 根據這個變量來判斷是否顯示刪除圖標,true是顯示,false是不顯示
public GridViewAdapter(Context mContext, String names[], int icons[]) {
this.mContext = mContext;
this.names = names;
this.icons = icons;
}
public void setIsShowDelete(boolean isShowDelete) {
this.isShowDelete = isShowDelete;
notifyDataSetChanged();
}
@Override
public int getCount() {
return icons.length;
}
@Override
public Object getItem(int position) {
return icons[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.grid_item,
null);
img = (ImageView) convertView.findViewById(R.id.img);
name_tv = (TextView) convertView.findViewById(R.id.name_tv);
deleteView = convertView.findViewById(R.id.delete_markView);
deleteView.setVisibility(isShowDelete ? View.VISIBLE : View.GONE);// 設置刪除按鈕是否顯示
img.setBackgroundResource(icons[position]);
name_tv.setText(names[position]);
return convertView;
}
}
源碼包:http://www.oschina.net/action/code/download?code=35495&id=51622