enter image description here 在自定义gridview中安装应用程序。当我们重新打开grid.view所有项目都是双倍时,再次打开网格视图项目变为三元组。
- MainAvtivity.java
醇>
case R.id.edit_quick_links: {
gridView = new GridView(HomeActivity.this);
installedApps = getInstalledApps();
final GridViewAdapter gridViewAdapter = new GridViewAdapter(HomeActivity.this, installedApps, mSelctedAppsList);
gridView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
gridView.setAdapter(gridViewAdapter);
gridView.setNumColumns(5);
}
- GridViewAdapter.java
醇>
public class GridViewAdapter<T> extends BaseAdapter {
private Context context;
private LayoutInflater layoutInflater;
List<AppList> listStorage;
MainActivity homeactivity;
private int selectedIndex;
private int selectedColor = Color.parseColor("#1b1b1b");
SparseBooleanArray mSparseBooleanArray;
public GridViewAdapter(Context context, List<AppList> customizedListView) {
layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.context = context;
listStorage = customizedListView;
mSparseBooleanArray = new SparseBooleanArray();
}
public void setSelectedIndex(int ind) {
selectedIndex = ind;
notifyDataSetChanged();
}
public ArrayList<T> getCheckedItems() {
ArrayList<T> mTempArry = new ArrayList<T>();
for (int i = 0; i < listStorage.size(); i++) {
if (mSparseBooleanArray.get(i)) {
mTempArry.add((T) listStorage.get(i));
}
}
return mTempArry;
}
@Override
public int getCount() {
return listStorage.size();
}
public Object getItem(int position) {
return listStorage.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder listViewHolder;
if (convertView == null) {
listViewHolder = new ViewHolder();
convertView = layoutInflater.inflate(R.layout.add_apps_grid_item, parent, false);
listViewHolder.textInListView = (TextView) convertView.findViewById(R.id.item_name);
listViewHolder.imageInListView = (ImageView) convertView.findViewById(R.id.item_type);
listViewHolder.tvPkgName = (TextView) convertView.findViewById(R.id.tvPack);
listViewHolder.select_app = (CheckBox) convertView.findViewById(R.id.select_app);
convertView.setTag(listViewHolder);
} else {
listViewHolder = (ViewHolder) convertView.getTag();
}
byte[] getIcondata = listStorage.get(position).getIcon();
Drawable image = new BitmapDrawable(BitmapFactory.decodeByteArray(getIcondata, 0, getIcondata.length)); listViewHolder.textInListView.setText(listStorage.get(position).getName());
listViewHolder.imageInListView.setImageDrawable(image);
listViewHolder.tvPkgName.setText(listStorage.get(position).getPackageName());
listViewHolder.select_app.setTag(position); listViewHolder.select_app.setChecked(mSparseBooleanArray.get(position));
listViewHolder.select_app.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mSparseBooleanArray.put((Integer) buttonView.getTag(), isChecked);
}
});
return convertView;
}
OnCheckedChangeListener mCheckedChangeListener = new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
mSparseBooleanArray.put((Integer) buttonView.getTag(), isChecked);
}
};
static class ViewHolder{
TextView textInListView, tvPkgName;
ImageView imageInListView;
CheckBox select_app;
}
}
答案 0 :(得分:0)
解决问题已解决。 在调用适配器类清除列表之前。 installedApps.clear();