这个问题定义适配器已得到解决。找出它是一个简单的错字,我引用了错误的布局文件。的列表视图崩溃
我试图创建一个自定义适配器列表视图,这样我可以显示与等级值,我的计划从菜单中的每个项目数据库得到了(不可编辑)的评级吧。当我运行它时,它崩溃,我无法弄清楚为什么。
这是试图创建列表视图的方法。 SetBogusFoodArray2()
返回在另一个类中定义的菜单项的ArrayList。这一切都正常工作。
private void setupMenu2(){
ArrayList<MenuItem> menu = setBogusFoodArray2();
MenuAdapter myMenuAdapter = new MenuAdapter(this, menu);
ListView menuList = (ListView) findViewById(R.id.listView1);
menuList.setAdapter(myMenuAdapter);
}
这里是我的适配器的定义。
public class MenuAdapter extends BaseAdapter{
private Context context;
private List<MenuItem> myMenu = new ArrayList<MenuItem>();
public MenuAdapter(Context context, ArrayList<MenuItem> menu){
context = context;
myMenu = menu;
}
public int getCount() {
return myMenu.size();
}
public Object getItem(int position) {
return myMenu.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View myView = convertView;
MenuItem myFood = (MenuItem) getItem(position);
if (convertView == null){
LayoutInflater inf = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
myView = inf.inflate(R.layout.hall_list_item, null);
}
TextView name = (TextView) myView.findViewById(R.id.textView1);
TextView hall = (TextView) myView.findViewById(R.id.textView2);
RatingBar rating = (RatingBar) myView.findViewById(R.id.ratingBar1);
name.setText(myFood.myName);
hall.setText(myFood.myHall);
rating.setRating(myFood.myRating);
return myView;
}
}
任何帮助将不胜感激! 这是logcat中的头几个错误。如果你想看到更多,还有更多的红色!
11-02 18:10:36.284:E/AndroidRuntime(619):致命异常:主 11-02 18:10:36.284:E/AndroidRuntime(619):显示java.lang.NullPointerException 11-02 18:10:36.284:E/AndroidRuntime(619):在edu.calvin.cs.dininghall4.MenuAdapter.getView(MenuAdapter.java:49) 11-02 18:10:36.284:E/AndroidRuntime(619):在android.widget.AbsListView.obtainView(AbsListView.java:2267) 11-02 18:10:36.284:E/AndroidRuntime(619):在android.widget.ListView.measureHeightOfChildren(ListView.java:1244)
下面是相关的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff444444" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#ffffffff" />
<RatingBar
android:id="@+id/ratingBar1"
android:isIndicator="true"
android:rating = "2.5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView1"
style="?android:attr/ratingBarStyleSmall"/>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/ratingBar1"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#ffffffff" />
</RelativeLayout>
通过排除法和注释掉的代码,这是问题的线路有:
name.setText(myFood.myName);
hall.setText(myFood.myHall);
rating.setRating(myFood.myRating);
它与这些行注释掉,但文本仅仅是默认的。我试图简单地插入值而不是变量,但它仍然崩溃。看来,对这些(setText(“培根”),setBackgroundColor,setAllCaps等)的任何引用都会导致应用程序崩溃。
您可以发布LogCat? –
而时髦的括号是复制/粘贴到问题的产物。他们在实际的代码中都很好。 – Dragonfiremalus
请发布logcat日志和您的布局xml文件.. –