1 つの Android アプリケーションを開発する必要があります。
ここで、カスタム グリッドビュー アダプター クラスを作成する必要があります。
しかし、次のエラーが発生しています:
06-14 14:56:26.676: E/AndroidRuntime(797): Caused by: java.lang.NullPointerException
06-14 14:56:26.676: E/AndroidRuntime(797): at com.bestinuk.adapter.CategoriesAdapter.getCount(CategoriesAdapter.java:34)
06-14 14:56:26.676: E/AndroidRuntime(797): at android.widget.GridView.setAdapter(GridView.java:180)
06-14 14:56:26.676: E/AndroidRuntime(797): at com.example.androidbestinuk.HomePage.onCreate(HomePage.java:43)
私は以下のようなアダプタークラスを書きました:
public class CategoriesAdapter extends BaseAdapter {
private Activity activity;
カテゴリを一覧表示します。プライベート静的 LayoutInflater インフレータ = null;
public CategoriesAdapter(Activity a, List<Category> categories) {
activity = a;
this.categories=categories;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
return categories.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.list_item, null);
ImageView thumb_image=(ImageView)vi.findViewById(R.id.categoryimage);
TextView title = (TextView)vi.findViewById(R.id.categorytitle); // title
Category categorylist = (Category) getItem(position);
title.setText(categorylist.getmCategoryName());
thumb_image.setImageBitmap(categorylist.getmCategoryImage());
return vi;
}
}
ここで、なぜ abovr エラーが発生するのですか ???
これらのエラーを解決するにはどうすればよいですか???
これらの解決策を教えてください???
編集:
はい、私のリストは null です。そのため、null ポインター例外が発生しています。
これは私の HomePage.java クラスです:
public class HomePage extends Activity {
List<Category> categories = new ArrayList<Category>();;
GridView category_list;
CategoriesAdapter categoryViewAdapter;
private ProgressDialog pDialog;
static final String URL = "http://dev.mercuryminds.com/xctesting/feed.xml";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
category_list = (GridView) findViewById(R.id.categorylist);
GetXMLTask task = new GetXMLTask(this);
task.execute(new String[] { URL });
}
//private inner class extending AsyncTask
private class GetXMLTask extends AsyncTask<String, Void, Document> {
private Activity context;
public GetXMLTask(Activity context) {
this.context = context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
// Create a progressbar
pDialog = new ProgressDialog(HomePage.this);
// Set progressbar title
pDialog.setTitle("BestinUk");
// Set progressbar message
pDialog.setMessage("Loading...");
pDialog.setIndeterminate(false);
// Show progressbar
pDialog.show();
}
@Override
protected Document doInBackground(String... urls) {
Document dom = null;
String xml = null;
for (String url : urls) {
xml = getXmlFromUrl("http://dev.mercuryminds.com/xctesting/feed.xml");
dom= XMLfunctions.XMLfromString(xml);
}
return dom;
}
@Override
protected void onPostExecute(Document dom) {
Category categoryBean = null;
if(dom !=null) {
Element root = dom.getDocumentElement();
NodeList categoryNL = root.getElementsByTagName("Category");
if(categoryNL.getLength() > 0){
for (int i=0;i<categoryNL.getLength();i++){
Node categoryNode = categoryNL.item(i);
Element categoryElmt = null;
if(categoryNode.hasAttributes()){
categoryBean = new Category();
categoryElmt = (Element)categoryNode;
categoryBean.setmCategoryName(categoryElmt.getAttribute("title"));
categoryBean.setmCategoryID(Integer.parseInt(categoryElmt.getAttribute("categoryid")));
categoryBean.setmCategoryImageLink(categoryElmt.getAttribute("image"));
categories.add(categoryBean);
categoryViewAdapter = new CategoriesAdapter(HomePage.this, categories);
category_list.setAdapter(categoryViewAdapter);
System.out.println("Category Title is "+ " "+categoryElmt.getAttribute("title"));
System.out.println("Category Image is "+ " "+categoryElmt.getAttribute("image"));
}
-----------
------------
---------
pDialog.dismiss();
}
}
現在、次のエラーが発生しています:
06-14 16:00:21.076: E/AndroidRuntime(1305): FATAL EXCEPTION: main
06-14 16:00:21.076: E/AndroidRuntime(1305): java.lang.ClassCastException: java.lang.Integer cannot be cast to com.example.androidbestinuk.Category
06-14 16:00:21.076: E/AndroidRuntime(1305): at com.bestinuk.adapter.CategoriesAdapter.getView(CategoriesAdapter.java:56)
これは私の56行目です:
Category categorylist = (Category) getItem(position);
私のコードで何が問題なのですか??? 解決策を教えてください???
以下の行を追加した後に出力を得ました:
Category categorylist = categories.get(position);