Reputation: 6369
I have a ListView set with a adapter.
This adapter receive a list of Objects. In these Objects, there is an attribute isActivated. If this attribute is false, I don't want to display this item into the ListView but I don't want to delete the Object from the list of Objects I pass through the Adapter.
I try to return a null from the getView() method of the Adapter but obviously it's not that.
How could I do ?
ERROR:
questions04-01 12:21:54.290: E/AndroidRuntime(5593): FATAL EXCEPTION: main
questions04-01 12:21:54.290: E/AndroidRuntime(5593): java.lang.NullPointerException
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.widget.ListView.fillDown(ListView.java:692)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.widget.ListView.fillFromTop(ListView.java:750)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.widget.ListView.layoutChildren(ListView.java:1629)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.widget.AbsListView.onLayout(AbsListView.java:1993)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.view.View.layout(View.java:9606)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.view.ViewGroup.layout(ViewGroup.java:3879)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.widget.LinearLayout.setChildFrame(LinearLayout.java:1542)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.widget.LinearLayout.layoutVertical(LinearLayout.java:1403)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.widget.LinearLayout.onLayout(LinearLayout.java:1314)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.view.View.layout(View.java:9606)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.view.ViewGroup.layout(ViewGroup.java:3879)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.widget.LinearLayout.setChildFrame(LinearLayout.java:1542)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1527)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.widget.LinearLayout.onLayout(LinearLayout.java:1316)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.view.View.layout(View.java:9606)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.view.ViewGroup.layout(ViewGroup.java:3879)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.widget.LinearLayout.setChildFrame(LinearLayout.java:1542)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.widget.LinearLayout.layoutVertical(LinearLayout.java:1403)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.widget.LinearLayout.onLayout(LinearLayout.java:1314)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.view.View.layout(View.java:9606)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.view.ViewGroup.layout(ViewGroup.java:3879)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.widget.FrameLayout.onLayout(FrameLayout.java:400)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.view.View.layout(View.java:9606)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.view.ViewGroup.layout(ViewGroup.java:3879)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.widget.LinearLayout.setChildFrame(LinearLayout.java:1542)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.widget.LinearLayout.layoutVertical(LinearLayout.java:1403)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.widget.LinearLayout.onLayout(LinearLayout.java:1314)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.view.View.layout(View.java:9606)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.view.ViewGroup.layout(ViewGroup.java:3879)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.widget.FrameLayout.onLayout(FrameLayout.java:400)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.view.View.layout(View.java:9606)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.view.ViewGroup.layout(ViewGroup.java:3879)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.view.ViewRoot.performTraversals(ViewRoot.java:1288)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.view.ViewRoot.handleMessage(ViewRoot.java:2066)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.os.Handler.dispatchMessage(Handler.java:99)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.os.Looper.loop(Looper.java:132)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat android.app.ActivityThread.main(ActivityThread.java:4126)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat java.lang.reflect.Method.invokeNative(Native Method)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat java.lang.reflect.Method.invoke(Method.java:491)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
questions04-01 12:21:54.290: E/AndroidRuntime(5593): questionsat dalvik.system.NativeStart.main(Native Method)
Upvotes: 0
Views: 194
Reputation: 1834
There will be a view for each object in the adapter. Therefore you want that view to be invisible when !isActivated, not null. Try making getView() return whatever type of views your rows are, with height zero.
It seems very hackish and unless your adapter has thousands of items, you should nonetheless filter the list before creating it.
Upvotes: 1