今天看到Listview這篇,照著文中的代碼試了之后,發(fā)現(xiàn)報錯了。
多看了幾次,發(fā)現(xiàn)自己并沒有帶錯代碼啊,求交怎么解決問題
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)?
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學院和江蘇省首批服務外包人才培訓基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務機構(gòu),發(fā)展為教育服務業(yè)的綜合性企業(yè)集團,成為集合面授教學培訓、網(wǎng)
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。