2013-07-31 4 views
0

격자보기에서 내 이미지 아래에 텍스트를 추가하려고합니다. Null 포인트 예외 오류가 나타납니다. 다음은 아래 텍스트 GridView의 이미지

레이아웃 파일입니다 : 내가 함께 노력

convertView = mInflater.inflate(R.layout.grid_item, 
        parent,false); 

:

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.GridView; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class ImageAdapter extends BaseAdapter { 
    Context mContext; 
    private LayoutInflater mInflater; 

    // Keep all Images in array 
    public Integer[] mThumbIds = { 
      R.drawable.image1, R.drawable.image2, 
      R.drawable.image6, R.drawable.image3, 
      R.drawable.image5, R.drawable.image4 



    }; 

    // Constructor 
    public ImageAdapter(Context c){ 
     mContext = c; 
     mInflater = LayoutInflater.from(c); 
    } 

    public ImageAdapter(Residential residential) { 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public int getCount() { 
     return mThumbIds.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     return mThumbIds[position]; 
    } 

    @Override 
    public long getItemId(int position) { 
     return 0; 
    } 

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

     View MyView = convertView; 

     if (convertView == null) 
     { 

     convertView = mInflater.inflate(R.layout.grid_item, 
        parent,false); 

     TextView tv = (TextView)MyView.findViewById(R.id.grid_item_text); 
     tv.setText("Item"); 

     ImageView imageView = (ImageView)MyView.findViewById(R.id.grid_item_image); 

     //ImageView imageView = new ImageView(mContext); 
     imageView.setImageResource(mThumbIds[position]); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     imageView.setLayoutParams(new GridView.LayoutParams(190, 100)); 
     } 
     return MyView; 
    } 

} 

그것은 선 아래에서 널 예외 오류를 던지고 :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 

    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:gravity="center_horizontal" 
    android:background="#000080"> 

    <imageview android:id="@+id/grid_item_image" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
    </imageview> 

    <textview android:id="@+id/grid_item_text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="TextView" 
     android:gravity="center_horizontal" 
     android:textColor="#000000"> 
    </textview> 

</LinearLayout> 

ImageAdapter 클래스는 코드가 아래에있다 다양한 옵션이 제안되었지만 모두 동일한 결과가 나타납니다.

LayoutInflater li = ((Activity) mContext).getLayoutInflater(); 

LayoutInflater li = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

해결 방법을 제안하십시오. 감사.

+0

는 스택 추적을 게시 getView에서 ViewHolder

static class ViewHolder { TextView textview; ImageView imageView; } 

를 사용합니다. 또한 TextView tv = (TextView) convertView.findViewById (R.id.grid_item_text);를 초기화하고'convertView'를 반환합니다. 뷰 홀더를 사용하십시오. http://developer.android.com/training/improving-layouts/smooth-scrolling.html – Raghunandan

+0

'주거'란 무엇입니까? – RobinHood

+0

@RobinHood : Residential은 gridview xml 파일입니다. – Gaurav

답변

1

당신은

Residential is the gridview xml file 
,536 말했다

그래서

convertView = mInflater.inflate(R.layout.resedential, 
       parent,false); 

은 또한 귀하의 의견

TextView tv = (TextView)convertView.findViewById(R.id.grid_item_text); 

return convertView를 초기화 convertview를 사용하여 사용합니다.

ViewHolder도 고려해야합니다.

http://developer.android.com/training/improving-layouts/smooth-scrolling.html

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

    ViewHolder vh; 

    if (convertView == null) 
    { 
    vh = new ViewHolder(); 
    convertView = mInflater.inflate(R.layout.resedential, 
       parent,false); 
    vh.tv = (TextView)convertView.findViewById(R.id.grid_item_text) 
    vh.imageView = (ImageView)convertView.findViewById(R.id.grid_item_image); 
    convertView.setTag(vh); 
    } 
    else 
    { 
    vh = (ViewHolder) convertView.getTag(); 
    }  
    vh.tv.setText("Item"); 
    vh.imageView.setImageResource(mThumbIds[position]); 
    vh.imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
    vh.imageView.setLayoutParams(new GridView.LayoutParams(190, 100)); 

    return convertView; 
} 
+0

위의보기 홀더를 사용하여 뷰 홀더를 사용하십시오. – Raghunandan

0

MyView는 convertView를 가리키고 있습니다.이 뷰는 null 일 수 있지만 새 뷰를 할당 한 후에는 MyView를 새로운 convertView로 업데이트하지 않았습니다.

작품 팽창 방법
@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     View MyView = convertView; 

     if (convertView == null) 
     { 

     convertView = mInflater.inflate(R.layout.grid_item, 
        parent,false); 
MyView = convertView; 
     TextView tv = (TextView)MyView.findViewById(R.id.grid_item_text); 
     tv.setText("Item"); 

     ImageView imageView = (ImageView)MyView.findViewById(R.id.grid_item_image); 

     //ImageView imageView = new ImageView(mContext); 
     imageView.setImageResource(mThumbIds[position]); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     imageView.setLayoutParams(new GridView.LayoutParams(190, 100)); 
     } 
     return MyView; 
    } 
+0

감사. 제안대로 시도했지만 여전히 같은 문제입니다. – Gaurav

+0

NullPointException을 받고있는 행은 –

0

: 그래서

static View inflate(Context context, int resource, ViewGroup root) 
Inflate a view from an XML resource. 

당신이 잘못된 PARAMS을 전달하는을 ..

그래서 귀하의 의견이의에서

convertView= mInflater.inflate(getBaseContext(),R.layout.grid_item,parent); 
+0

입니다. 매개 변수를 변경했지만 'ImageAdapter 유형의 메소드 getBaseContext() 메소드가 정의되지 않았습니다.'오류가 표시됩니다. – Gaurav

+1

그게 문제라고 생각하지 마라. http://developer.android.com/reference/android/view/LayoutInflater.html#inflate(int, android.view.ViewGroup, boolean). 워드 프로세서를 확인하십시오 – Raghunandan

+0

@Raghunandan pls이 코드에서 날 도와주세요 http://stackoverflow.com/questions/22986878/android-json-is-not-able-to-retrieve-any-files-from-mysql-database-it- is-empty/22987428? noredirect = 1 # 22987428 –

관련 문제