Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在适配器类中膨胀视图时调用TargetException_Android_Xml_Android Layout_Layout Inflater_Android Inflate - Fatal编程技术网

Android 在适配器类中膨胀视图时调用TargetException

Android 在适配器类中膨胀视图时调用TargetException,android,xml,android-layout,layout-inflater,android-inflate,Android,Xml,Android Layout,Layout Inflater,Android Inflate,我试图膨胀自定义recyclerview,但问题是每次我尝试膨胀onCreateViewHolder()中的xml文件时,它都会生成InvocationTargetException异常。我也应用了一些已经可用的解决方案,但问题仍然是一样的。我没有达到我所缺少的地方 public class CurrentListAdapter extends RecyclerView.Adapter<CurrentListAdapter.CurrentViewHolder> { priv

我试图膨胀自定义recyclerview,但问题是每次我尝试膨胀onCreateViewHolder()中的xml文件时,它都会生成InvocationTargetException异常。我也应用了一些已经可用的解决方案,但问题仍然是一样的。我没有达到我所缺少的地方

public class CurrentListAdapter extends RecyclerView.Adapter<CurrentListAdapter.CurrentViewHolder> {

    private List<Prescription> mLst;
    private Context mContext;
    private String[] list;

    public CurrentListAdapter(List<Prescription> mLst, Context mContext) {
        this.mLst = mLst;
        this.mContext = mContext;
    }

    @NonNull
    @Override
    public CurrentViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater layoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View v = layoutInflater.inflate(R.layout.row_current_list_item, parent, false);
        list = v.getResources().getStringArray(R.array.cStatus);
        return new CurrentViewHolder(v);
    }

    @Override
    public void onBindViewHolder(@NonNull CurrentViewHolder h, int position) {
        Prescription p = mLst.get(position);
        h.prescriptionId.setText(p.getPresId());
        h.patientName.setText(p.getPatientName());
        h.labTest.setText(p.getLabTest());
    }

    @Override
    public int getItemCount() {
        return mLst.size();
    }

    public class CurrentViewHolder extends RecyclerView.ViewHolder implements AdapterView.OnItemSelectedListener {

        TextView prescriptionId, patientName, labTest, labComment;
        Spinner status;
        ArrayAdapter<String> adapter;

        public CurrentViewHolder(@NonNull View v) {
            super(v);
            prescriptionId = v.findViewById(R.id.presId);
            patientName = v.findViewById(R.id.patientName);
            labTest = v.findViewById(R.id.labTest);
            labComment = v.findViewById(R.id.comment);
            status = v.findViewById(R.id.status);
            final List<String> statusList = new ArrayList<>(Arrays.asList(list));
            adapter = new ArrayAdapter<String>(itemView.getContext(), R.layout.spinner_item,statusList){
                @Override
                public boolean isEnabled(int position) {
                    if (position == 0)
                    {
                        return false;
                    }
                    else{
                        return true;
                    }
                }

                @Override
                public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
                    View view = super.getDropDownView(position, convertView, parent);
                    TextView tv = (TextView) view;
                    if(position == 0){
                        // Set the hint text color gray
                        tv.setTextColor(Color.GRAY);
                    }
                    else {
                        tv.setTextColor(Color.BLACK);
                    }
                    return view;
                }
            };
            adapter.setDropDownViewResource(R.layout.spinner_item);
            status.setAdapter(adapter);
            status.setOnItemSelectedListener(this);
        }

        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    }
}

公共类CurrentListAdapter扩展了RecyclerView.Adapter{ 私人名单mLst; 私有上下文; 私有字符串[]列表; 公共CurrentListAdapter(列表mLst、上下文mContext){ this.mLst=mLst; this.mContext=mContext; } @非空 @凌驾 public CurrentViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int viewType){ LayoutInflater LayoutInflater=(LayoutInflater)mContext.getSystemService(Context.LAYOUT\u INFLATER\u SERVICE); 视图v=LayoutFlater.充气(R.layout.row\u current\u list\u item,parent,false); list=v.getResources().getStringArray(R.array.cStatus); 返回新的CurrentViewHolder(v); } @凌驾 BindViewHolder上的公共无效(@NonNull CurrentViewHolder h,int位置){ 处方p=mLst.get(位置); h、 处方id.setText(p.getPresId()); h、 setText(p.getPatientName()); h、 setText(p.getLabTest()); } @凌驾 public int getItemCount(){ 返回mLst.size(); } 公共类CurrentViewHolder扩展了RecyclerView.ViewHolder实现AdapterView.OnItemSelectedListener{ TextView处方ID、患者姓名、labTest、labComment; 纺纱机状态; 阵列适配器; public CurrentViewHolder(@NonNull View v){ 超级(五); 处方id=v.findViewById(R.id.presId); patientName=v.findViewById(R.id.patientName); labTest=v.findViewById(R.id.labTest); labComment=v.findviewbyd(R.id.comment); 状态=v.findViewById(R.id.status); 最终列表状态列表=新的ArrayList(Arrays.asList(List)); adapter=new ArrayAdapter(itemView.getContext(),R.layout.spinner\u项,statusList){ @凌驾 公共布尔值isEnabled(整型位置){ 如果(位置==0) { 返回false; } 否则{ 返回true; } } @凌驾 公共视图getDropDownView(int位置,@Nullable视图convertView,@NonNull视图组父级){ 视图=super.getDropDownView(位置、转换视图、父级); TextView电视=(TextView)视图; 如果(位置==0){ //将提示文本设置为灰色 tv.setTextColor(彩色.灰色); } 否则{ tv.setTextColor(Color.BLACK); } 返回视图; } }; adapter.setDropDownViewResource(R.layout.spinner\u项); status.setAdapter(适配器); status.setOnItemSelectedListener(此); } @凌驾 已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){ } @凌驾 未选择公共无效(AdapterView父级){ } } }

android.view.InflateException:二进制XML文件行#28:二进制XML文件行#28:对类android.view.view进行充气时出错
原因:android.view.InflateException:二进制XML文件行#28:膨胀类android.view.view时出错
原因:java.lang.reflect.InvocationTargetException
位于java.lang.reflect.Constructor.newInstance0(本机方法)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:334)
位于android.view.LayoutInflater.createView(LayoutInflater.java:647)
位于android.view.LayoutInflater.onCreateView(LayoutInflater.java:703)
位于com.android.internal.policy.PhoneLayoutFlater.onCreateView(PhoneLayoutFlater.java:68)
位于android.view.LayoutInflater.onCreateView(LayoutInflater.java:720)
位于android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788)
位于android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
位于android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
位于android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
在android.view.LayoutInflater.充气(LayoutInflater.java:515)
在android.view.LayoutInflater.充气(LayoutInflater.java:423)
位于com.devaj.labapplication.Adapter.CurrentListAdapter.onCreateViewHolder(CurrentListAdapter.java:36)
位于com.devaj.labapplication.Adapter.CurrentListAdapter.onCreateViewHolder(CurrentListAdapter.java:21)
位于androidx.recyclerview.widget.recyclerview$Adapter.createViewHolder(recyclerview.java:6794)
在androidx.recyclerview.widget.recyclerview$Recycler.tryGetViewHolderFormationByDaildate(recyclerview.java:5975)上
位于androidx.recyclerview.widget.recyclerview$Recycler.getViewForPosition(recyclerview.java:5858)
在androidx.recyclerview.widget.recyclerview$Recycler.getViewForPosition(recyclerview.java:5854)上
位于androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2230)
位于androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1557)
位于androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1517)
位于androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:612)
在androidx.recyclerview.widget.recyclerview.dispatchLayoutStep2(回收器
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:padding="10dp"
    android:elevation="10dp"
    android:background="@drawable/list_ripple"
    android:layout_margin="15dp">

    <TextView
        android:id="@+id/presId"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:visibility="gone"/>

    <TextView
        android:id="@+id/patientName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Muhammad Ali"
        android:textSize="20sp"
        android:textColor="@color/colorLab"
        android:textStyle="bold"
        android:gravity="center_horizontal"/>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:backgroundTint="?android:attr/listDivider"
        />

    <TextView
        android:id="@+id/labTest"
        android:padding="8dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Test 1\nTest 2\nTest 3"
        android:singleLine="false"
        android:textSize="16sp"
        android:textStyle="italic"
        android:textColor="@color/colorBlack" />

    <EditText
        android:id="@+id/comment"
        android:padding="10dp"
        android:hint="Write something.."
        android:textSize="15sp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/edittext"/>

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:text="Status: "
        android:padding="10dp"
        android:textSize="15sp"
        android:textStyle="bold"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    <Spinner
        android:id="@+id/status"
        android:layout_width="match_parent"
        android:layout_height="45dp"
        android:padding="5dp" />
    </LinearLayout>

</LinearLayout>
    android.view.InflateException: Binary XML file line #28: Binary XML file line #28: Error inflating class android.view.View
    Caused by: android.view.InflateException: Binary XML file line #28: Error inflating class android.view.View
    Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
        at android.view.LayoutInflater.createView(LayoutInflater.java:647)
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:703)
        at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:68)
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:720)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
        at com.devaj.labapplication.Adapter.CurrentListAdapter.onCreateViewHolder(CurrentListAdapter.java:36)
        at com.devaj.labapplication.Adapter.CurrentListAdapter.onCreateViewHolder(CurrentListAdapter.java:21)
        at androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:6794)
        at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5975)
        at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5858)
        at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5854)
        at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2230)
        at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1557)
        at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1517)
        at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:612)
        at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3924)
        at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3641)
        at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4194)
        at android.view.View.layout(View.java:20967)
        at android.view.ViewGroup.layout(ViewGroup.java:6440)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1791)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1635)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1544)
        at android.view.View.layout(View.java:20967)
        at android.view.ViewGroup.layout(ViewGroup.java:6440)
        at androidx.viewpager.widget.ViewPager.onLayout(ViewPager.java:1775)
        at android.view.View.layout(View.java:20967)
        at android.view.ViewGroup.layout(ViewGroup.java:6440)
        at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:142)
        at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:41)
        at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1556)
        at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:888)
        at android.view.View.layout(View.java:20967)
        at android.view.ViewGroup.layout(ViewGroup.java:6440)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
        at android.view.View.layout(View.java:20967)
        at android.view.ViewGroup.layout(ViewGroup.java:6440)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1791)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1635)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1544)
2020-06-10 20:27:44.123 28901-28901/com.devaj.labapplication E/AndroidRuntime:     at android.view.View.layout(View.java:20967)
        at android.view.ViewGroup.layout(ViewGroup.java:6440)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
        at android.view.View.layout(View.java:20967)
        at android.view.ViewGroup.layout(ViewGroup.java:6440)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1791)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1635)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1544)
        at android.view.View.layout(View.java:20967)
        at android.view.ViewGroup.layout(ViewGroup.java:6440)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
        at com.android.internal.policy.DecorView.onLayout(DecorView.java:955)
        at android.view.View.layout(View.java:20967)
        at android.view.ViewGroup.layout(ViewGroup.java:6440)
        at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:3092)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2779)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1863)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8072)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
        at android.view.Choreographer.doCallbacks(Choreographer.java:723)
        at android.view.Choreographer.doFrame(Choreographer.java:658)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:7025)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
     Caused by: android.content.res.Resources$NotFoundException: Can't find ColorStateList from drawable resource ID #0x10805ed
        at android.content.res.ResourcesImpl.loadColorStateList(ResourcesImpl.java:1063)
        at android.content.res.Resources.loadColorStateList(Resources.java:1045)
        at android.content.res.TypedArray.getColorStateList(TypedArray.java:541)
        at android.view.View.<init>(View.java:5444)
        at android.view.View.<init>(View.java:5017)
        at android.view.View.<init>(View.java:4996)
            ... 79 more
android:backgroundTint="?android:attr/listDivider"