0

私はAndroidグリッドビューのコードを書きましたが、残念ながらコードを実行すると、アプリケーションは次のようなエラーを返します。

誰かがこれを解決する方法を知っているなら、私を助けてください。コーディングエラーが見つかりません。したがって、専門家は適切な指示を与えることを歓迎します。

これは私のアクティビティクラスです

public void onCreate(Bundle savedInstanceState) {

    if (!isNetworkAvailbale()) {
        Toast.makeText(getApplicationContext(), "Internet Connection not available", Toast.LENGTH_SHORT).show();
        finish();
    }

    super.onCreate(savedInstanceState);
    setContentView(R.layout.gridview);

    GridView gridView;

    ImageAdapter mAdapter;

    mAdapter = new ImageAdapter(this);

    gridView = (GridView) findViewById(R.id.gridview);

    gridView.setAdapter(mAdapter);

    gridView.setOnItemClickListener(new OnItemClickListener() {@
        Override
        public void onItemClick(AdapterView <? > arg0, View arg1, int position, long

            arg3) {
            Toast.makeText(NuesHoundRSSActivity.this, "Item co" + osition, Toast.LENGTH_SHORT).show();
        }
    });
}

これはアダプタークラスです

package com.nues.rss;

import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;

public class ImageAdapter extends BaseAdapter {
    private Activity activity;  

public ImageAdapter(Context c) {

}

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

public Object getItem(int position) {
    return null;
}

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

   // create a new ImageView for each item referenced by the Adapter
public static class ViewHolder  
{  
    public ImageView imgView;    
}  

@Override  
public View getView(int position, View convertView, ViewGroup parent) {  
    // TODO Auto-generated method stub  
    ViewHolder view;  
    LayoutInflater inflator = activity.getLayoutInflater();  

    if(convertView==null)  
    {  
        view = new ViewHolder();  
        convertView = inflator.inflate(R.layout.gridview_row, null);  

        view.imgView = (ImageView) convertView.findViewById(R.id.imageView1);  

        convertView.setTag(view);  

    }  
    else  
    {  
        view = (ViewHolder) convertView.getTag();  
    }  

    view.imgView.setImageResource(mThumbIds[position]);  

    return convertView;  
}  

// references to our images
private Integer[] mThumbIds = {
        R.drawable.sample_2, R.drawable.sample_3,
        R.drawable.sample_4, R.drawable.sample_5,
        R.drawable.sample_6, R.drawable.sample_7,
        R.drawable.sample_0, R.drawable.sample_1,
        R.drawable.sample_2, R.drawable.sample_3,
        R.drawable.sample_4, R.drawable.sample_5,
        R.drawable.sample_6, R.drawable.sample_7,
        R.drawable.sample_0, R.drawable.sample_1,
        R.drawable.sample_2, R.drawable.sample_3,
        R.drawable.sample_4, R.drawable.sample_5,
        R.drawable.sample_6, R.drawable.sample_7
};


}

これは私のGridview XMLです

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="5dp">

<ImageView
    android:layout_height="64dp"
    android:id="@+id/imageView1"
    android:layout_width="64dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true">
</ImageView>

<TextView
    android:text="TextView"
    android:layout_height="wrap_content"
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_below="@+id/imageView1"
    android:layout_marginTop="2dp"
    android:layout_centerHorizontal="true"
    android:textSize="18sp"
    android:ellipsize="marquee"></TextView>
</RelativeLayout>
4

3 に答える 3

2
private Activity activity;  

public ImageAdapter(Context c) {

}

これを次のように置き換えます

private Context c;

        public ImageAdapter(Context c) {
            this.c = c;

        }

LayoutInflater inflator = activity.getLayoutInflater();  

LayoutInflater inflator = ((Activity) c).getLayoutInflater(); 

これはうまくいきます。

于 2012-07-02T13:28:11.293 に答える
0

ここを参照してください:

public class ImageAdapter extends BaseAdapter {
        private Activity activity;  

    public ImageAdapter(Context c) {

    }

アクティビティ オブジェクトを初期化していません。

これを試して:

 public ImageAdapter(Activity ac) {
    this.activity=ac;
    }
于 2012-07-02T13:09:00.420 に答える
0

あなたのコードprivate Activity activity;では何も設定されておらず、null であるため、activity.getLayoutInflater();クラッシュします。

あなたはこのようなことをしたい:

private Context context; 

public ImageAdapter(Context c) { 
    this.context = c;
} 

そしてcontext.getLayoutInflater();

于 2012-07-02T13:09:42.433 に答える