【问题标题】:ImageView set image Resource doesn't show wanted image.pngImageView 设置图像资源不显示想要的 image.png
【发布时间】:2014-01-01 22:26:42
【问题描述】:

在我的 gridViewAdapter 中,我将 ImageResource 设置为 .png 对象,但它没有显示在活动中。这是适配器的getView函数:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View row = convertView; 
    ViewHolder holder; 
    if (row == null) { 
        LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 
        row = inflater.inflate(layoutResourceId, parent, false); 
        holder = new ViewHolder(); 
        holder.photoSubscriptTextView = (TextView) row.findViewById(R.id.photoSubscriptTextView); 
        holder.photoInstanceImageView = (ImageView) row.findViewById(R.id.galleryMonumentPhotoImageView); 
        row.setTag(holder); 
    } else { 
        holder = (ViewHolder) row.getTag(); 
    } 
    final Photo photo = data.get(position); 
    row.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
            Intent intent; 
            if(photo.getPodpis().equals(getContext().getString(R.string.photo_add))){ 
                intent = new Intent(); 
                intent.setType("image/*"); 
                intent.setAction(Intent.ACTION_GET_CONTENT); 
                ((Activity) context).startActivityForResult(Intent.createChooser(intent, "Select Picture"), 100); 
            } 
            else { 
                intent = new Intent(context, PhotoGallery.class); 
                intent.putExtra("photo", photo); 
                context.startActivity(intent); 
            } 
        } 
    }); 
    holder.photoSubscriptTextView.setText(photo.getPodpis()); 
    if(photo.getUri() != null) 
        aQuery.id(holder.photoInstanceImageView).image(photo.getUri()); 
    else if(photo.getPodpis().equals(getContext().getResources().getString(R.string.photo_add)))  { 
        holder.photoInstanceImageView.setImageResource(R.drawable.image_add); 
    } 
    return row; 

还有xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
          xmlns:tools="http://schemas.android.com/tools" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:layout_marginTop="5dp" 
          android:orientation="vertical" 
          android:padding="5dp" 
          android:clickable="true" 
          android:focusable="true"> 
<!--android:background="@drawable/grid_color_selector"--> 
<ImageView 
        android:id="@+id/galleryMonumentPhotoImageView" 
        android:layout_width="100dp" 
        android:layout_height="100dp" 
        android:src="@drawable/image_add"> 
</ImageView> 
<TextView 
        android:id="@+id/photoSubscriptTextView" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="5dp" 
        android:gravity="center" 
        android:textSize="12sp" > 
</TextView> 
</LinearLayout>

主布局只包含Relative Layout和GridView。 谁能告诉我为什么我在适配器中设置的资源中的图像没有显示在活动中?

【问题讨论】:

    标签: android gridview resources imageview gallery


    【解决方案1】:

    仅仅因为您将 onClick() 方法放在 getView() 中并不意味着它可以访问在 getView() 中创建的临时变量。单击的项目可能与上次处理的 getView() 方法不同。所以,它们之间没有任何联系。

    您应该在您的活动 onCreate() 或 onCreateView() 代码中在 ListView 本身上放置一个 onItemClick() 侦听器。该方法具有被单击项目的位置,然后您可以使用该位置从 ArrayList 中获取该项目。

    像这样:

    mListView.setOnItemClickListener(new ListView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View view, int position, long row_id) {
            final Photo photo = data.get(position); 
            // etc.
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-11
      相关资源
      最近更新 更多