2012-03-20 7 views
0

単純なリストの作成に問題があります(拡張可能なリストは既に動作しています)。 setListAdapter()を実行すると、アプリケーションがクラッシュしています。私のミスはどこですか?ListActivity、ListView、ListAdapterがAndroidアプリケーションをクラッシュする

Acivity:

public class UserListActivity extends ListActivity { 

    UserListAdapter mAdapter; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.userlist); 
     mAdapter = new UserListAdapter(this); 
     setListAdapter(mAdapter); 
     registerForContextMenu(getListView()); 
    } 
} 

アダプタ:

public class UserListAdapter implements ListAdapter { 

    private Context context; 
    private List<UserItem> users; 

    public UserListAdapter(Context c) { 

     context = c; 
     users = new Database(context).getAllUsers(); // this class is working properly 
    } 

    public int getCount() { 

     return users.size(); 
    } 

    public Object getItem(int pos) { 

     return users.get(pos).getSimplified(); 
    } 

    public long getItemId(int pos) { 

     return users.get(pos).getId(); 
    } 

    public int getItemViewType(int arg0) { 

     return 0; 
    } 

    public View getView(int arg0, View arg1, ViewGroup arg2) { 

     return null; 
    } 

    public int getViewTypeCount() { 

     return 0; 
    } 

    public boolean hasStableIds() { 

     return true; 
    } 

    public boolean isEmpty() { 

     return users.size() == 0; 
    } 

    public void registerDataSetObserver(DataSetObserver arg0) { 

    } 

    public void unregisterDataSetObserver(DataSetObserver arg0) { 

    } 

    public boolean areAllItemsEnabled() { 

     return false; 
    } 

    public boolean isEnabled(int arg0) { 

     return false; 
    } 
} 

ビュー:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#312843" > 

    <ImageView 
     android:id="@+id/imageView2" 
     android:layout_width="fill_parent" 
     android:layout_height="82dp" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:scaleType="fitXY" 
     android:src="@drawable/header_side" /> 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="235dp" 
     android:layout_height="82dp" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:src="@drawable/header" /> 

    <ListView 
     android:id="@android:id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/imageView2" 
     android:background="#312843" 
     android:cacheColorHint="#312843" 
     android:fadeScrollbars="true" > 
    </ListView> 

</RelativeLayout> 
+0

あなたは例外がありますか?に? – Praveenkumar

答えて

1

あなたgetView()メソッドで、Viewを返してください。nullではありません。 (ここでそれを行う方法についてのチュートリアルです:http://www.vogella.de/articles/AndroidListView/article.html#listview_adapterown

また、あなたのgetViewTypeCount()方法はこちらを0

public int getViewTypeCount() { 
     return 1; 
    } 
+0

これはアプリケーションのクラッシュを助けましたが、空のリストビューがあり、TextViewオブジェクトを返しました。vom getView() –

+0

@zolex ListViewに何も表示されません。 )? 'new Database(context).getAllUsers()'がいくつかの要素を含む 'ArrayList'を返すかどうかを確認します(空の' ArrayList'を返した場合、 'ListView'は空になります)。 – Luksprog

+0

私は、実際に問題がないことを確認するためにデータベースからデータを読み取る部分をコメントアウトしました... –

1

を別の値を返す必要があり、あなたの問題は、あなたが返すことができない

public View getView(int arg0, View arg1, ViewGroup arg2) { 

     return null; 
    } 

ですヌルビュー、それはあなたにNPEを与えるでしょうし、アプリケーションはクラッシュするでしょう

in getView you gotta do something like this 
public View getView(int arg0, View convertView, ViewGroup arg2) { 
     View view = convertView; 
     if (convertView == null) { 
      LayoutInflater layout = LayoutInflater.from(context); 
           view = layout.inflate(R.layout.MyLayout, null); 
     } 
return view; 
} 
関連する問題