android gridview дочерний щелчок слушателя с удалением вида - PullRequest
0 голосов
/ 17 декабря 2011

Я реализовал gridview с пользовательским адаптером, и адаптер раздувает макет и показывает два элемента в каждом элементе gridview.один - это изображение, а другой - кнопка закрытия, расположенная справа вверху изображения. Моя проблема - удалить элемент из сетки, когда я нажимаю на кнопку с крестиком.Я должен вызвать событие для двух изображений.Так что я планировал дать событие закрытия кнопки внутри адаптера.Наконец-то это работает, но я не могу удалить нажатую позицию.Всякий раз, когда я нажимаю на изображение кнопки закрытия, он удаляет последний элемент из моего массива.Пожалуйста, помогите мне в этом.

Мой код ниже:

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

    View MyView = convertView;



    pos=position;
    positionForCheck =(Object) pos;
    if (convertView == null)
    {           

        LayoutInflater li = (LayoutInflater) MyContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        MyView = li.inflate(R.layout.grid_item_for_bag, null);


        // Add The Image!!!
        ImageView imageSrc = (ImageView) MyView.findViewById(R.id.grid_item_bag_image);

        ImageView imageClose = (ImageView) MyView.findViewById(R.id.grid_item_bag_close);


    }   

    imageSrc.setImageResource(MyList.get(position));


    imageClose.setImageResource(R.drawable.closeicon_31x31);
    imageClose.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {   

                                    MyList.remove(position)
                notifyDataSetChanged();
            }
        });


    return MyView;
}

1 Ответ

0 голосов
/ 19 декабря 2011

Я получил вывод. код похож на ниже

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

View MyView = convertView;
ViewHolder holder;


pos=position;
positionForCheck =(Object) pos;
if (convertView == null)
{           

    LayoutInflater li = (LayoutInflater) MyContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    MyView = li.inflate(R.layout.grid_item_for_bag, null);
    holder = new ViewHolder();

    // Add The Image!!!
    holder.imageSrc = (ImageView) MyView.findViewById(R.id.grid_item_bag_image);

    holder.imageClose = (ImageView) MyView.findViewById(R.id.grid_item_bag_close);
    MyView.setTag(holder);

}   
 else
 {
 holder =(ViewHolder) MyView.getTag();
 }

holder.imageSrc.setImageResource(MyList.get(position));

holder.imageClose.setTag(position)
holder.imageClose.setImageResource(R.drawable.closeicon_31x31);
holder.imageClose.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {   
            int posi = Integer.parseInt(v.getTag().toString());
            MyList.remove(posi)
            notifyDataSetChanged();
        }
    });


return MyView;
 }
...