【问题标题】:Android Custom ArrayAdapter in Fragment片段中的Android自定义ArrayAdapter
【发布时间】:2011-12-15 22:28:43
【问题描述】:

嗨,我正在制作一个简单的列表,我只想要一个图标标题和描述并将其放入片段中,因为它是 viewpager 的一部分,但是我得到了一个空指针异常,我不知道为什么。我的代码看起来像这样,我的所有其他页面都很好,只是这个列表我无法工作。

public class Test extends Fragment{

    View view;
    Context context;
    public static ListView lView;
    public static ArrayAdapter<String> leftList;

    public class MyCustomAdapter extends ArrayAdapter<String> {
        public MyCustomAdapter(Context context, int resource, int textViewResourceId, String[] dayOfWeek) {
            super(context, resource, textViewResourceId, dayOfWeek);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            TextView label=(TextView)view.findViewById(R.id.rowTextView);
            label.setText(DayOfWeek[position]);
            ImageView icon=(ImageView)view.findViewById(R.id.listIcon);
            if (DayOfWeek[position]=="Sunday"){
                icon.setImageResource(R.drawable.file);
            }else{
                icon.setImageResource(R.drawable.icon);
            }
            TextView desc = (TextView)view.findViewById(R.id.description);
            if (DayOfWeek[position]=="Sunday"){
                desc.setText("Description1");
            }else{
                desc.setText("desc");
            }
            return view;
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
        view = inflater.inflate(R.layout.leftlist, null);
        LinearLayout pasteLayout=(LinearLayout)view.findViewById(R.id.bottomBar);
        pasteLayout.setVisibility(LinearLayout.GONE);
        context = getActivity();
        lView = (ListView) view.findViewById(R.id.ListView01);
        Test est = new Test();
        Test.MyCustomAdapter teS = est.new MyCustomAdapter(context, R.layout.row, R.id.rowTextView, DayOfWeek);
        leftList = teS;
        lView.setAdapter(leftList);
        return view;
    }


    String[] DayOfWeek = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
}

logcat中的错误

E/AndroidRuntime( 1304): java.lang.NullPointerException
E/AndroidRuntime( 1304):    at com.testing.Test$MyCustomAdapter.getView(Test.java:29)
E/AndroidRuntime( 1304):    at android.widget.AbsListView.obtainView(AbsListView.java:1445)
E/AndroidRuntime( 1304):    at android.widget.ListView.measureHeightOfChildren(ListView.java:1220)
E/AndroidRuntime( 1304):    at android.widget.ListView.onMeasure(ListView.java:1131)
E/AndroidRuntime( 1304):    at android.view.View.measure(View.java:8363)
E/AndroidRuntime( 1304):    at android.widget.RelativeLayout.measureChild(RelativeLayout.java:566)
E/AndroidRuntime( 1304):    at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:381)
E/AndroidRuntime( 1304):    at android.view.View.measure(View.java:8363)
E/AndroidRuntime( 1304):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3160)
E/AndroidRuntime( 1304):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
E/AndroidRuntime( 1304):    at android.view.View.measure(View.java:8363)
E/AndroidRuntime( 1304):    at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:595)
E/AndroidRuntime( 1304):    at android.view.View.measure(View.java:8363)
E/AndroidRuntime( 1304):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3160)
E/AndroidRuntime( 1304):    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
E/AndroidRuntime( 1304):    at android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
E/AndroidRuntime( 1304):    at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
E/AndroidRuntime( 1304):    at android.view.View.measure(View.java:8363)
E/AndroidRuntime( 1304):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3160)
E/AndroidRuntime( 1304):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
E/AndroidRuntime( 1304):    at android.view.View.measure(View.java:8363)
E/AndroidRuntime( 1304):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3160)
E/AndroidRuntime( 1304):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
E/AndroidRuntime( 1304):    at android.view.View.measure(View.java:8363)
E/AndroidRuntime( 1304):    at android.view.ViewRoot.performTraversals(ViewRoot.java:841)
E/AndroidRuntime( 1304):    at android.view.ViewRoot.handleMessage(ViewRoot.java:1873)
E/AndroidRuntime( 1304):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 1304):    at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime( 1304):    at android.app.ActivityThread.main(ActivityThread.java:3703)
E/AndroidRuntime( 1304):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 1304):    at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime( 1304):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
E/AndroidRuntime( 1304):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
E/AndroidRuntime( 1304):    at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager(  278):   Force finishing activity com.testing/.MainActivity
W/ActivityManager(  278): Activity pause timeout for HistoryRecord{408d4540 com.testing/.MainActivity}

任何帮助将不胜感激,非常感谢我真的希望我能得到这个工作,我想我真的很接近:)

【问题讨论】:

    标签: android listview row android-arrayadapter fragment


    【解决方案1】:

    您正在调用view.findViewById,但视图尚未实例化。相反,请使用onCreateView 中传递给您的布局充气器,可能通过将其传递给适配器的构造函数。

    【讨论】:

      【解决方案2】:

      您已将 View 声明为全局,但未实例化。您可以在代码中添加一行

      view = convertView
      

      作为适配器的getView方法中的第一条语句...

      或者你可以使用convertView.findViewById

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-21
        • 1970-01-01
        相关资源
        最近更新 更多