2015-05-17 61 views
0

我有一個自定義的GridView由顏色數組填充。 現在,當我點擊該項目時,我想獲取單元格的顏色。 我有這個代碼,但是當我點擊這個項目時,得到java.lang.NullPointerException。Android GridView的getItem顏色

public class Colori_picker extends Activity { 
private GridView grColori; 
private ColorPickerAdapter mAdapter; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.color_picker); 

    grColori= (GridView) findViewById(R.id.gridViewColors); 
    grColori.setAdapter(new ColorPickerAdapter(this)); 


    grColori.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Object color = mAdapter.getItem(position); 

      finish(); 
     } 
    }); 
} 

適配器

public class ColorPickerAdapter extends BaseAdapter { 

private Context context; 
// list which holds the colors to be displayed 
private List<Integer> colorList = new ArrayList<Integer>(); 
// width of grid column 
int colorGridColumnWidth; 

public ColorPickerAdapter(Context context) { 
    this.context = context; 

    String colors[][] = { 
      { "83334C", "B65775", "E07798", "F7A7C0", "FBC8D9", "FCDEE8" }, 
      { "000000", "434343", "666666", "999999", "CCCCCC", "EFEFEF" } }; 

    colorList = new ArrayList<Integer>(); 

    // add the color array to the list 
    for (int i = 0; i < colors.length; i++) { 
     for (int j = 0; j < colors[i].length; j++) { 
      colorList.add(Color.parseColor("#" + colors[i][j])); 
     } 
    } 
} 

public View getView(int position, View convertView, ViewGroup parent) { 
    ImageView imageView; 


    if (convertView == null) { 
     imageView = new ImageView(context); 
     // set the width of each color square 
     imageView.setLayoutParams(new GridView.LayoutParams(colorGridColumnWidth, colorGridColumnWidth)); 

    } else { 
     imageView = (ImageView) convertView; 
    } 

    imageView.setBackgroundColor(colorList.get(position)); 
    imageView.setId(position); 

    return imageView; 
} 

public int getCount() { 
    return colorList.size(); 
} 

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

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

}

回答

1

正在發生的事情是,你在聲明實例變量mAdapter但從來沒有實例化它。所有你需要做的是改變這種

grColori.setAdapter(new ColorPickerAdapter(this)); 

對此

mAdapter = new ColorPickerAdapter(this); 
grColori.setAdapter(mAdapter);