【问题标题】:long click to make image visible in gridview长按使图像在gridview中可见
【发布时间】:2012-07-11 19:44:26
【问题描述】:

gridview 的每个单元格中有 2 张图像。第一个图像是不可见的,第二个图像是可见的。我想要的是当我使用长按任何网格视图项目时,不可见的图像应该是可见的。谢谢。

myGrid.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,int arg2, long arg3) {
            DELETE_SIT=1;

            //Toast.makeText(FavorilerAct.this,"long click"+DELETE_SIT, Toast.LENGTH_SHORT).show();
            ((BaseAdapter)myGrid.getAdapter()).notifyDataSetChanged();

            return true;
        }
    });

// 这是我在自定义适配器扩展 BaseAdapter 中的 getview 方法

public View getView(int position, View convertView, ViewGroup parent) 
       {
          View MyView = convertView;
          String url = stock_list.get(position);

      if ( convertView == null )
      {
         LayoutInflater li = getLayoutInflater();
         MyView = li.inflate(R.layout.gridview, null);

         // Add The Text!!!
         TextView tv = (TextView)MyView.findViewById(R.id.favorite_author);
         tv.setText(names.get(position));
         ImageView img=(ImageView)MyView.findViewById(R.id.favorite_image);
         ImageView artiImg=(ImageView)MyView.findViewById(R.id.delete_fav_btn);
         if(DELETE_SIT!=1)
             artiImg.setVisibility(View.INVISIBLE);
         else
             artiImg.setVisibility(View.VISIBLE);
        try {
            img.setImageBitmap(loadBitmap(url));
        } catch (IOException e) {
            e.printStackTrace();
        }
        if(DELETE_SIT==1){
            //ImageView delete_btn=(ImageView)MyView.findViewById(R.id.delete_fav_btn);
            //artiImg.setImageResource(R.drawable.kapat);
            artiImg.setVisibility(View.VISIBLE);
        }
      }

      return MyView;
   }

【问题讨论】:

  • 你有什么问题?
  • 当我对gridview使用长按时,第二个不可见的图像不可见。
  • 好的,让我插入我的代码

标签: android gridview android-widget


【解决方案1】:

好的,试试这个:

public View getView(int position, View convertView, ViewGroup parent) 
{
      View vi= convertView;
      String url = stock_list.get(position);
      ViewHolder holder = null;

      if ( vi == null )
      {
          LayoutInflater li = getLayoutInflater();
          vi = li.inflate(R.layout.gridview, null);
          holder = new ViewHolder();

          holder.tv = (TextView)vi.findViewById(R.id.favorite_author);
          holder.img=(ImageView)vi.findViewById(R.id.favorite_image);
          holder.artiImg=(ImageView)vi.findViewById(R.id.delete_fav_btn);

          vi.setTag(holder);
       }else{
           holder = (ViewHolder)vi.getTag();
       }

       holder.tv.setText(names.get(position));

      if(DELETE_SIT!=1){
          try {
              holder.img.setImageBitmap(loadBitmap(url));
          } catch (IOException e) {
              e.printStackTrace();
          }
          holder.img.setVisibility(View.VISIBLE);
          holder.artiImg.setVisibility(View.INVISIBLE);
      }
      else{
          holder.img.setVisibility(View.INVISIBLE);
          holder.artiImg.setVisibility(View.VISIBLE);
      }

   }

  return vi;
}

static class ViewHolder{
    public TextView tv;
    public ImageView img;
    public ImageView artiImg;
}

如果您还有问题,请告诉我。

【讨论】:

  • 我不明白为什么我需要知道每个单元格的状态。我只需要长按任意一个单元格,然后所有单元格都会有第二张图片。
  • @Emilla 哦,好吧,对不起,我没听懂!有时间我会编辑我的帖子
  • @Emilla 为什么不在任何地方更改 ImageView "img" 的可见性?
  • 不..这是不可能的..正如你从我的代码中看到的那样,我只需要设置一些可以警告getview方法以使第二张图像可见的东西......也许我们可以假设我们有2 getview 方法当长按gridview 的任何项目时,这2 getview 方法之一将运行。也许第一个 getview 会有可见的图像,第二个会有不可见的图像
猜你喜欢
  • 1970-01-01
  • 2022-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多