Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.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
Java 使用自定义对象的arrayList填充listview_Java_Android_Listview_Custom Adapter - Fatal编程技术网

Java 使用自定义对象的arrayList填充listview

Java 使用自定义对象的arrayList填充listview,java,android,listview,custom-adapter,Java,Android,Listview,Custom Adapter,我已经在android上试了几周了,但在用自定义对象填充listview时遇到了一个障碍。我试过几个关于stack overflow和youtube的教程,但当应用程序运行时,它在list.setAdapter(adapter)处崩溃。但我不知道原因是什么 以下是我最近的一次尝试: public class NPCEditor extends Fragment{ View myView; ArrayList<NPC> NPCs = new ArrayList<

我已经在android上试了几周了,但在用自定义对象填充listview时遇到了一个障碍。我试过几个关于stack overflow和youtube的教程,但当应用程序运行时,它在list.setAdapter(adapter)处崩溃。但我不知道原因是什么

以下是我最近的一次尝试:

public class NPCEditor extends Fragment{

    View myView;
    ArrayList<NPC> NPCs = new ArrayList<>();

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        myView = inflater.inflate(R.layout.npc_edit, container, false);

        populateNPCList();
        populateListview();

        return myView;
    }

    private void populateNPCList(){
        NPCs.add(new NPC(40, 10, 10, 10, 10, 10, 10, "", "", "", "", "", "", ""));
        NPCs.add(new NPC(50, 10, 10, 10, 10, 10, 10, "", "", "", "", "", "", ""));
        NPCs.add(new NPC(60, 10, 10, 10, 10, 10, 10, "", "", "", "", "", "", ""));
        NPCs.add(new NPC(70, 10, 10, 10, 10, 10, 10, "", "", "", "", "", "", ""));
        NPCs.add(new NPC(80, 10, 10, 10, 10, 10, 10, "", "", "", "", "", "", ""));
    }

    private void populateListview(){
        ArrayAdapter<NPC> adapter = new NPCAdapter2();
        ListView list = myView.findViewById(R.id.NPCList);
        list.setAdapter(adapter);
    }

    private class NPCAdapter2 extends ArrayAdapter<NPC>{
        public NPCAdapter2(){
            super(getActivity(), R.layout.npc_layout, NPCs);
        }

        public View getView(int position, View convertView, ViewGroup parent){
            View itemView = convertView;
            if(itemView == null){
                itemView = getLayoutInflater().inflate(R.layout.npc_layout, parent, false);
            }
            NPC currentNPC = NPCs.get(position);
            TextView txtAge = itemView.findViewById(R.id.textAge);
            txtAge.setText(currentNPC.getAge());
            return  itemView;
       }
    }
}
公共类NPCEditor扩展片段{
查看我的视图;
ArrayList NPCs=新的ArrayList();
@可空
@凌驾
创建视图时的公共视图(LayoutFlater充气机、@Nullable ViewGroup容器、Bundle savedInstanceState){
myView=充气机。充气(R.layout.npc_编辑,容器,false);
populateNPCList();
populateListview();
返回myView;
}
私有void populateNPCList(){
添加(新NPC(40,10,10,10,10,10,10,10,10,10,10,“,”,“,”,“,”,“,”,”);
添加(新NPC(50,10,10,10,10,10,10,10,10,10,10,“,”,“,”,“,”,“,”,”);
添加(新NPC(60,10,10,10,10,10,10,10,10,10,10,“,”,“,”,“,”,“,”,”);
添加(新NPC(70,10,10,10,10,10,10,10,10,10,10,“,”,“,”,“,”,“,”,”);
添加(新NPC(80,10,10,10,10,10,10,10,10,10,10,“,”“,”“,”“,”“,”“,”“,”“);
}
私有void populateListview(){
ArrayAdapter适配器=新的NPCAdapter2();
ListView list=myView.findviewbyd(R.id.NPCList);
list.setAdapter(适配器);
}
私有类NPCAdapter2扩展了ArrayAdapter{
公共NPCAdapter2(){
super(getActivity(),R.layout.npc_layout,NPCs);
}
公共视图getView(int位置、视图转换视图、视图组父视图){
视图项视图=转换视图;
如果(itemView==null){
itemView=GetLayoutFlater()。充气(R.layout.npc\u布局,父级,false);
}
NPC currentNPC=NPCs.get(位置);
TextView txtAge=itemView.findviewbyd(R.id.textAge);
setText(currentNPC.getAge());
返回项目视图;
}
}
}
以及xml文件 npc_布局

<?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="match_parent">

    <TextView
        android:id="@+id/textAge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Age" />
</LinearLayout>

和NPCEditor布局:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ListView
        android:id="@+id/NPCList"
        android:layout_width="368dp"
        android:layout_height="327dp"
        android:layout_marginBottom="16dp"
        android:layout_marginStart="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent" />
</android.support.constraint.ConstraintLayout>

日志:

坠机开始

04-22 10:43:56.986 12587-12587/blackanvil.com.dmi E/AndroidRuntime:>致命异常:main 流程:blackanvil.com.dmi,PID:12587

java.lang.NoSuchMethodError:没有虚拟方法 getLayoutFlater()Landroid/view/LayoutFlater;课堂上 Lblackanvil/com/dmi/NPCEditor;或者它的超类(声明 “blackanvil.com.dmi.NPCEditor”出现在 /data/app/blackanvil.com.dmi-1/split_lib_slice_2_apk.apk) 位于blackanvil.com.dmi.NPCEditor$NPCAdapter2.getView(NPCEditor.java:53) 在android.widget.AbsListView.obtainView(AbsListView.java:2497)上 位于android.widget.ListView.makeAndAddView(ListView.java:1930) 在android.widget.ListView.fillDown(ListView.java:722)中 位于android.widget.ListView.fillFromTop(ListView.java:783) 位于android.widget.ListView.layoutChildren(ListView.java:1721) 在android.widget.AbsListView.onLayout(AbsListView.java:2254) 位于android.view.view.layout(view.java:16966) 位于android.view.ViewGroup.layout(ViewGroup.java:5604) 在 android.support.constraint.ConstraintLayout.onLayout(ConstraintLayout.java:1855) 位于android.view.view.layout(view.java:16966) 位于android.view.ViewGroup.layout(ViewGroup.java:5604) 在android.widget.FrameLayout.layoutChildren(FrameLayout.java:398)中 位于android.widget.FrameLayout.onLayout(FrameLayout.java:333) 位于android.view.view.layout(view.java:16966) 位于android.view.ViewGroup.layout(ViewGroup.java:5604) 在 android.support.constraint.ConstraintLayout.onLayout(ConstraintLayout.java:1855) 位于android.view.view.layout(view.java:16966) 位于android.view.ViewGroup.layout(ViewGroup.java:5604) 在 HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:132) 在 android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42) 在 android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1361) 在 android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:869)
itemView = LayoutInflater.from(getContext()).inflate(R.layout.npc_layout, parent, false);