应用因 ArrayAdapter Android 中的 noClassDefFounderror 而崩溃
App crashed with noClassDefFound error in ArrayAdpter Android
我有一个自定义 listView
,其中包含图像和文本视图。但是在 getView
方法中,应用程序崩溃了。
我的代码:
@Override
public View getView(final int position, View view, ViewGroup parent) {
if (view == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(layout, null);
}
ImageView removeWatch = (ImageView) view.findViewById(R.id.remove_watch);
removeWatch.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Log.d("BEFOERE","on click in menuwatchadapter");
}
});
数组适配器:
public class MenuListAdapter extends ArrayAdapter<MenuListModel> {
private Context context;
private int layout;
private List<MenuListModel> Model;
public interface ModelAction {
public void removedModel(MenuListModel removedModel);
}
private ModelAction ModelActions;
public MenuListAdapter(Context context, int resource,
List<MenuListModel> objects, ModelAction ModelActionListener) {
super(context, resource, objects);
this.context = context;
this.layout = resource;
this.Model = objects;
this.ModelActions = ModelActionListener;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(layout, null);
}
ImageView remove = (ImageView) view.findViewById(R.id.remove);
remove.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Log.d("TEST","CLICKED");
}
});
return view;
}
}
在第 removeWatch.setOnClickListener
行,应用程序崩溃了。
谁能告诉我可能是什么问题?
注意:我正在使用 Android-Studio。
LOGCAT :
-13 15:01:25.502 28351-28351/com.example.watch E/AndroidRuntime:致命异常:main
进程:com.example.watch,PID:28351
java.lang.NoClassDefFoundError: com.example.watch.adapter.MenuWatchListAdapter$1
在 com.example.watch.adapter.MenuWatchListAdapter.getView(MenuWatchListAdapter.java:95)
在 android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:220)
在 android.widget.AbsListView.obtainView(AbsListView.java:2255)
在 android.widget.ListView.makeAndAddView(ListView.java:1790)
在 android.widget.ListView.fillSpecific(ListView.java:1337)
在 android.widget.ListView.layoutChildren(ListView.java:1620)
在 android.widget.AbsListView.onLayout(AbsListView.java:2087)
在 android.view.View.layout(View.java:14948)
在 android.view.ViewGroup.layout(ViewGroup.java:4631)
在 android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
在 android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
在 android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
在 android.view.View.layout(View.java:14948)
在 android.view.ViewGroup.layout(ViewGroup.java:4631)
将此行 view = inflater.inflate(layout, null)
更改为
view = inflater.inflate(R.layout.Your_LAYOUT, null)
试试吧。
我不知道为什么,但我已经卸载了整个 android-studio 和 android sdk 并重新安装它,现在可以使用了。
我有一个自定义 listView
,其中包含图像和文本视图。但是在 getView
方法中,应用程序崩溃了。
我的代码:
@Override
public View getView(final int position, View view, ViewGroup parent) {
if (view == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(layout, null);
}
ImageView removeWatch = (ImageView) view.findViewById(R.id.remove_watch);
removeWatch.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Log.d("BEFOERE","on click in menuwatchadapter");
}
});
数组适配器:
public class MenuListAdapter extends ArrayAdapter<MenuListModel> {
private Context context;
private int layout;
private List<MenuListModel> Model;
public interface ModelAction {
public void removedModel(MenuListModel removedModel);
}
private ModelAction ModelActions;
public MenuListAdapter(Context context, int resource,
List<MenuListModel> objects, ModelAction ModelActionListener) {
super(context, resource, objects);
this.context = context;
this.layout = resource;
this.Model = objects;
this.ModelActions = ModelActionListener;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(layout, null);
}
ImageView remove = (ImageView) view.findViewById(R.id.remove);
remove.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Log.d("TEST","CLICKED");
}
});
return view;
}
}
在第 removeWatch.setOnClickListener
行,应用程序崩溃了。
谁能告诉我可能是什么问题?
注意:我正在使用 Android-Studio。
LOGCAT :
-13 15:01:25.502 28351-28351/com.example.watch E/AndroidRuntime:致命异常:main 进程:com.example.watch,PID:28351 java.lang.NoClassDefFoundError: com.example.watch.adapter.MenuWatchListAdapter$1 在 com.example.watch.adapter.MenuWatchListAdapter.getView(MenuWatchListAdapter.java:95) 在 android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:220) 在 android.widget.AbsListView.obtainView(AbsListView.java:2255) 在 android.widget.ListView.makeAndAddView(ListView.java:1790) 在 android.widget.ListView.fillSpecific(ListView.java:1337) 在 android.widget.ListView.layoutChildren(ListView.java:1620) 在 android.widget.AbsListView.onLayout(AbsListView.java:2087) 在 android.view.View.layout(View.java:14948) 在 android.view.ViewGroup.layout(ViewGroup.java:4631) 在 android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671) 在 android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525) 在 android.widget.LinearLayout.onLayout(LinearLayout.java:1434) 在 android.view.View.layout(View.java:14948) 在 android.view.ViewGroup.layout(ViewGroup.java:4631)
将此行 view = inflater.inflate(layout, null)
更改为
view = inflater.inflate(R.layout.Your_LAYOUT, null)
试试吧。
我不知道为什么,但我已经卸载了整个 android-studio 和 android sdk 并重新安装它,现在可以使用了。