Fragment 中的 Android 自定义 ArrayAdapter

标签 android listview row android-arrayadapter fragment

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

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}

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

最佳答案

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

关于Fragment 中的 Android 自定义 ArrayAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8527538/

相关文章:

listview - 过滤时未保留ListTile onTap中的ListView.builder索引

python - ListView 根据 slug 请求

java - JTable 中第一个不必要的空行。如何去除它?

Android ColorFilter - Porter-Duff 模式

android 将对象成员从 alertdialog 传递回 listview

python - 查找值大于列平均值的列

Mysql触发器将行从表移动到相同的其他表

java - 不幸的是,Android 应用程序已停止并可在 Android 设备上运行

Android:如何在设置可绘制背景时保持角半径?

android - 如何在不同的计算机上签署apk?