账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    第一行代码 listview 出现报错,怎么解决?
    • 东京的樱花在巴黎飘落2020-01-01 00:00
    52
    0

    今天看到Listview这篇,照着文中的代码试了之后,发现报错了。
    多看了几次,发现自己并没有带错代码啊,求交怎么解决问题

    MainActivity.java

    public class MainActivity extends AppCompatActivity {
    
        private List<Fruit> fruitList = new ArrayList<>();
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initFruits();
    
            FruitAdapter arrayAdapter = new FruitAdapter(MainActivity.this,R.layout.fruit_item,fruitList);
          
            ListView listView = (ListView) findViewById(R.id.listview);
            listView.setAdapter(arrayAdapter);
        }
    
        private void initFruits(){
            for( int i =0; i<2;i++){
                Fruit apple = new Fruit("Apple",R.drawable.apple_pic);
                fruitList.add(apple);
                Fruit banana = new Fruit("Banana",R.drawable.banana_pic);
                fruitList.add(banana);
                Fruit orange = new Fruit("Orange",R.drawable.orange_pic);
                fruitList.add(orange);
                Fruit watermelon = new Fruit("Watermelon",R.drawable.watermelon_pic);
                fruitList.add(watermelon);
                Fruit pear = new Fruit("Pear",R.drawable.pear_pic);
                fruitList.add(pear);
                Fruit grape = new Fruit("Grape",R.drawable.grape_pic);
                fruitList.add(grape);
                Fruit pineapple = new Fruit("Pineapple",R.drawable.pineapple_pic);
                fruitList.add(pineapple);
                Fruit strawberry = new Fruit("Strawberry",R.drawable.strawberry_pic);
                fruitList.add(strawberry);
                Fruit cherry = new Fruit("Cherry",R.drawable.cherry_pic);
                fruitList.add(cherry);
                Fruit mango = new Fruit("Mango",R.drawable.mango_pic);
                fruitList.add(mango);
    
            }
        }
    }

    FruitAdapter.java

    public class FruitAdapter extends ArrayAdapter<Fruit> {
    
        private int resourseId;
        public FruitAdapter(Context context, int textViewResourceId, List<Fruit> objects){
            super(context,textViewResourceId,objects);
            resourseId = textViewResourceId;
    
        }
        public View getview(int position, View ConvertView, ViewGroup parent){
            Fruit fruit = getItem(position); 
            View view= LayoutInflater.from(getContext()).inflate(resourseId,parent,false);
            ImageView fruitImage = (ImageView) view.findViewById(R.id.fruit_image);
            TextView fruitName =(TextView) view.findViewById(R.id.fruitname);
            fruitImage.setImageResource(fruit.getImageId());
            fruitName.setText(fruit.getName());
            return view;
        }
    }

    Fruit.java

    public class Fruit {
    
        private String name;
        private int imageId;
    
        public Fruit (String name,int imageId){
            this.name = name;
            this.imageId = imageId;
    
        }
    
        public String getName() {
            return name;
        }
    
        public int getImageId() {
            return imageId;
        }
    }

    ativity_mian.xml

    <LinearLayout 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"
        android:orientation="vertical"
        tools:context=".MainActivity">
    
        <ListView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/listview"></ListView>
    </LinearLayout>

    fruit_item.xml

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/fruit_image"/>
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/fruitname"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="10dp"/>
    
    </LinearLayout>

    报错:

    Process: com.example.hwy01.listviewtest, PID: 25459
        java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
            at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:445)
            at android.widget.ArrayAdapter.getView(ArrayAdapter.java:415)
            at android.widget.AbsListView.obtainView(AbsListView.java:2366)
            at android.widget.ListView.makeAndAddView(ListView.java:2052)
            at android.widget.ListView.fillDown(ListView.java:786)
            at android.widget.ListView.fillFromTop(ListView.java:847)
            at android.widget.ListView.layoutChildren(ListView.java:1826)
            at android.widget.AbsListView.onLayout(AbsListView.java:2165)
            at android.view.View.layout(View.java:20670)
            at android.view.ViewGroup.layout(ViewGroup.java:6194)
            at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812)
            at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656)
            at android.widget.LinearLayout.onLayout(LinearLayout.java:1565)
            at android.view.View.layout(View.java:20670)
            at android.view.ViewGroup.layout(ViewGroup.java:6194)
            at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
            at android.view.View.layout(View.java:20670)
            at android.view.ViewGroup.layout(ViewGroup.java:6194)
            at android.support.v7.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:443)
            at android.view.View.layout(View.java:20670)
            at android.view.ViewGroup.layout(ViewGroup.java:6194)
            at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
            at android.view.View.layout(View.java:20670)
            at android.view.ViewGroup.layout(ViewGroup.java:6194)
            at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812)
            at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656)
            at android.widget.LinearLayout.onLayout(LinearLayout.java:1565)
            at android.view.View.layout(View.java:20670)
            at android.view.ViewGroup.layout(ViewGroup.java:6194)
            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:753)
            at android.view.View.layout(View.java:20670)
            at android.view.ViewGroup.layout(ViewGroup.java:6194)
            at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2767)
            at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2294)
            at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1447)
            at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7130)
            at android.view.Choreographer$CallbackRecord.run(Choreographer.java:935)
            at android.view.Choreographer.doCallbacks(Choreographer.java:747)
            at android.view.Choreographer.doFrame(Choreographer.java:682)
            at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:921)
            at android.os.Handler.handleCallback(Handler.java:873)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:193)
            at android.app.ActivityThread.main(ActivityThread.java:6642)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
         Caused by: java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.TextView
            at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:432)
            at android.widget.ArrayAdapter.getView(ArrayAdapter.java:415) 
            at android.widget.AbsListView.obtainView(AbsListView.java:2366) 
            at android.widget.ListView.makeAndAddView(ListView.java:2052) 
            at android.widget.ListView.fillDown(ListView.java:786) 
            at android.widget.ListView.fillFromTop(ListView.java:847) 
            at android.widget.ListView.layoutChildren(ListView.java:1826) 
            at android.widget.AbsListView.onLayout(AbsListView.java:2165) 
            at android.view.View.layout(View.java:20670) 
            at android.view.ViewGroup.layout(ViewGroup.java:6194) 
            at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) 
            at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) 
            at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) 
            at android.view.View.layout(View.java:20670) 
            at android.view.ViewGroup.layout(ViewGroup.java:6194) 
            at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) 
            at android.widget.FrameLayout.onLayout(FrameLayout.java:261) 
            at android.view.View.layout(View.java:20670) 
            at android.view.ViewGroup.layout(ViewGroup.java:6194) 
            at android.support.v7.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:443) 
            at android.view.View.layout(View.java:20670) 
            at android.view.ViewGroup.layout(ViewGroup.java:6194) 
            at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) 
            at android.widget.FrameLayout.onLayout(FrameLayout.java:261) 
            at android.view.View.layout(View.java:20670) 
            at android.view.ViewGroup.layout(ViewGroup.java:6194) 
            at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) 
            at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) 
            at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) 
            at android.view.View.layout(View.java:20670) 
            at android.view.ViewGroup.layout(ViewGroup.java:6194) 
            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:753) 
            at android.view.View.layout(View.java:20670) 
            at android.view.ViewGroup.layout(ViewGroup.java:6194) 
            at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2767) 
            at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2294) 
            at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1447) 
            at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7130) 
            at android.view.Choreographer$CallbackRecord.run(Choreographer.java:935) 
            at android.view.Choreographer.doCallbacks(Choreographer.java:747) 
            at android.view.Choreographer.doFrame(Choreographer.java:682) 
            at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:921) 
            at android.os.Handler.handleCallback(Handler.java:873) 
            at android.os.Handler.dispatchMessage(Handler.java:99) 
            at android.os.Looper.loop(Looper.java:193) 
            at android.app.ActivityThread.main(ActivityThread.java:6642) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部