Как обрабатывать Gridview Нажмите в ViewPager?
Я создаю gridview в своем классе FragmentA, и когда я щелкаю позицию gridview, скажите 0, затем он перемещается к классу FragmentB и снова, когда я щелкаю позицию 1, затем он перемещается к классу FragmentC.
Но моя проблема в том, что когда мы возвращаемся в мой класс FragmentA, мое меню Gridview автоматически удваивается, почему?
Здесь ниже мой полный код:
ФрагментА класс
public class FragmentA extends Fragment {
GridView gridView;
ArrayList<Item> gridArray = new ArrayList<Item>();
CustomGridViewAdapter customGridAdapter;
public FragmentA() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_a, container, false);
Bitmap homeIcon = BitmapFactory.decodeResource(this.getResources(),
R.drawable.home);
Bitmap userIcon = BitmapFactory.decodeResource(this.getResources(),
R.drawable.personal);
gridArray.add(new Item(homeIcon, "Home"));
gridArray.add(new Item(userIcon, "User"));
gridArray.add(new Item(homeIcon, "House"));
gridArray.add(new Item(userIcon, "Friend"));
gridArray.add(new Item(homeIcon, "Home"));
gridArray.add(new Item(userIcon, "Personal"));
gridArray.add(new Item(homeIcon, "Home"));
gridArray.add(new Item(userIcon, "User"));
gridArray.add(new Item(homeIcon, "Building"));
gridView = (GridView) view.findViewById(R.id.gridView1);
customGridAdapter = new CustomGridViewAdapter(getActivity(),
R.layout.row_grid, gridArray);
gridView.setAdapter(customGridAdapter);
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
switch (position) {
case 0:
((MainActivity) getActivity()).switchToFragementB(2);
break;
case 1:
((MainActivity) getActivity()).switchToFragmentC(3);
break;
}
}
});
return view;
}
}
Вот класс адаптера CustomGridViewAdapter
public class CustomGridViewAdapter extends ArrayAdapter<Item> {
Context context;
int layoutResourceId;
ArrayList<Item> data = new ArrayList<Item>();
public CustomGridViewAdapter(Context context, int layoutResourceId,
ArrayList<Item> data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
RecordHolder holder = null;
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new RecordHolder();
holder.txtTitle = (TextView) row.findViewById(R.id.item_text);
holder.imageItem = (ImageView) row.findViewById(R.id.item_image);
row.setTag(holder);
} else {
holder = (RecordHolder) row.getTag();
}
Item item = data.get(position);
holder.txtTitle.setText(item.getTitle());
holder.imageItem.setImageBitmap(item.getImage());
return row;
}
static class RecordHolder {
TextView txtTitle;
ImageView imageItem;
}
}
2 ответа
мое меню Gridview автоматически удваивается, почему?
Это потому, что вы добавляете элементы в onCreateView()
вашего фрагмента и, вероятно, это onCreateView()
позвонил снова, когда вы вернетесь к FragmentA
, поэтому, прежде чем вставлять элементы в gridArray
очистить элементы в массиве.
gridArray.clear();
gridArray.add(new Item(homeIcon, "Home"));
gridArray.add(new Item(userIcon, "User"));
//you code.....
holder.txtTitle.setText(item.getTitle()); holder.imageItem.setImageBitmap(item.getImage());
показывают ошибки в getTitle () и getImage().