2013-12-14 44 views
0

在我gridViewAdapter我設置ImageResource到.png對象,但它不顯示在活動。這裏的適配器的功能getView:ImageView設置圖像資源不顯示想要image.png

@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> 

主要佈局只包含相對佈局和GridView。 有人可以告訴我爲什麼我在適配器中設置的資源中的圖像沒有顯示在活動中?

回答

0

僅僅因爲您將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. 
    } 
}