我有使ListAdapters正常工作的经验,并且已经在线查看有关自定义适配器的教程以与GridView接口,但我似乎无法让我的工作正常工作。我在我的行上收到了NullPointerException:
image.setBackgroundColor(Color.GREEN);
我的活动和适配器如下: FixtureActivity:
package net.blakely.paul.Hyperion;
import android.os.Bundle;
import android.widget.GridView;
import com.actionbarsherlock.app.SherlockActivity;
public class FixtureActivity extends SherlockActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fixtures);
FixtureItemAdapter fia = new FixtureItemAdapter(this, 6);
GridView grids = (GridView) findViewById(R.id.grids);
grids.setAdapter(fia);
}
}
FixtureItemAdapter:
package net.blakely.paul.Hyperion;
import android.app.Activity;
import android.graphics.Color;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class FixtureItemAdapter extends BaseAdapter {
private Activity context;
public int size;
private ImageView image;
private TextView label;
public FixtureItemAdapter(Activity context, int size) {
super();
this.context = context;
this.size = size;
}
public int getCount() {
// TODO Auto-generated method stub
return size;
}
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Log.v("Hyperion","convertView is Null?="+Boolean.toString(convertView==null));
if (convertView == null) {
LayoutInflater inflater = context.getLayoutInflater();
convertView = (LinearLayout) inflater.inflate(net.blakely.paul.Hyperion.R.layout.outputitem, null, true);
image = (ImageView) convertView.findViewById(net.blakely.paul.Hyperion.R.id.imageView1);
Log.v("Hyperion","image is Null?="+Boolean.toString(image==null));
label = (TextView) convertView.findViewById(net.blakely.paul.Hyperion.R.id.textView2);
}
// Decide which channel this is and set information accordingly
image.setBackgroundColor(Color.GREEN);
label.setText("LABEL");
return convertView;
}
}
非常感谢您对此问题的任何帮助。物有所值。我发现当第一次运行适配器时我得到了NPE,当convertView为null时,图像也会变为空。
答案 0 :(得分:0)
你打电话
image.setBackgroundColor(Color.GREEN);
label.setText("LABEL");
如果我们没有输入if语句图像并且没有实例化标签对象,那么当你调用setBackroundColr和setText时你会得到一个空指针异常:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Log.v("Hyperion","convertView is Null?="+Boolean.toString(convertView==null));
if (convertView == null) {
LayoutInflater inflater = context.getLayoutInflater();
convertView = (LinearLayout) inflater.inflate(net.blakely.paul.Hyperion.R.layout.outputitem, null, true);
}
image = (ImageView)convertView.findViewById(net.blakely.paul.Hyperion.R.id.imageView1);
label = (TextView) convertView.findViewById(net.blakely.paul.Hyperion.R.id.textView2);
// Decide which channel this is and set information accordingly
image.setBackgroundColor(Color.GREEN);
label.setText("LABEL");
答案 1 :(得分:0)
对不起,但我发现了我的问题。事实证明,我正在调用错误的xml文件,即outputitem而不是fixtureitem,因为我从程序中的另一个ListAdapter复制了该行。谢谢你的回答。