这里是MainActivity.java
只包括一对夫妇if/else
块:的DataModel不能被转换为java.lang.String
// Simple array with a list of languages
String[] languages = {"Arabic", "Armenian", "Cantonese", "Cherokee",
"Czech", "Dutch", "English", "French", "Gaelic", "German",
"Greek", "Haitian Creole", "Hawaiian", "Italian", "Japanese", "Korean",
"Mandarin", "Navajo", "Philippines Tagalog", "Polish", "Portuguese", "Romanian",
"Russian", "Spanish", "Swedish", "Vietnamese"};
// Simple array with a list of the spelling for Merry Christmas in language
final String[] merrychristmas = {"Eid Melad Majeed", "Shnorhavor Surb Tsnund",
"Sing-daan Faai-lohk", "ulihelisdi hunadetiyisgvi", "veselé vánoce",
"vrolijk kerstfeest", "Merry Christmas!", "joyeux Noël", "Nollaig Shona Duit",
"frohe Weihnacten", "Kalá Christoúgenna", "Jwaye Nwèl", "Mele Kalikimaka",
"Buon Natale", "Merīkurisumasu", "jilgohun-christmas-bonoseyo",
"Shèndàn kuàilè", "Nizhónígo Késhmish Da'doohleel",
"Mąligayang Pasko", "Wesołych Świąt", "Feliz Natal", "Crăcuin fericit",
"schastlivogo Rozhdestva", "Feliz Navidad", "god jul", "Chúc Mừng Giáng Sinh"};
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rowItems = new ArrayList<DataModel>();
for (int i = 0; i < languages.length; i++) {
DataModel item = new DataModel(languages[i]);
rowItems.add(item);
}
listView = (ListView) findViewById(R.id.listView1);
CustomAdapter adapter = new CustomAdapter(this, R.layout.item_row, rowItems);
listView.setAdapter(adapter);
listView.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
LinearLayout layout = new LinearLayout(MainActivity.this);
layout.setBackgroundResource(R.drawable.circle);
TextView tv = new TextView(MainActivity.this);
// set the TextView properties
tv.setTextColor(Color.WHITE);
tv.setTextSize(20);
tv.setPaddingRelative(22, 108, 0, 0);
tv.setGravity(Gravity.FILL);
tv.setText(merrychristmas[position]);
layout.addView(tv);
Toast toast = new Toast(MainActivity.this);
if (position == 0) {
Toast.makeText(getApplicationContext(),
merrychristmas[position], Toast.LENGTH_LONG);
toast.setView(layout);
toast.setGravity(Gravity.CENTER_HORIZONTAL, 0, 0);
toast.show();
_player = MediaPlayer.create(MainActivity.this, R.raw.arabic);
_player.start();
}
if (position == 1) {
Toast.makeText(getApplicationContext(),
merrychristmas[position], Toast.LENGTH_LONG);
// set the layout as the toast view
toast.setView(layout);
toast.setGravity(Gravity.CENTER_HORIZONTAL, 0, 0);
toast.show();
_player = MediaPlayer.create(MainActivity.this, R.raw.armenian);
_player.start();
}
if (position == 2) {
Toast.makeText(getApplicationContext(),
merrychristmas[position], Toast.LENGTH_LONG);
而且CustomAdapter.java:
public class CustomAdapter extends ArrayAdapter<DataModel> {
Context context;
/****** custom adapter constructor ******/
public CustomAdapter(Context context, int resourceId, List<DataModel> data) {
super(context, resourceId, data);
this.context = context;
}
/****** create a holder class to contain inflated xml file elements ******/
private class ViewHolder {
public TextView txtlanguage;
}
/**
**** create each ListView row *****
*/
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
DataModel rowItem = getItem(position);
LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
/****** Inflate item_row file for each row ******/
convertView = mInflater.inflate(R.layout.item_row, null);
/****** ViewHolder object to contain item_row.xml file elements ******/
holder = new ViewHolder();
holder.txtlanguage = (TextView) convertView.findViewById(R.id.text1);
/****** set holder with LayoutInflater ******/
convertView.setTag(holder);
} else
holder = (ViewHolder) convertView.getTag();
/****** set model values in Holder elements ******/
holder.txtlanguage.setText(rowItem.getLanguage());
/****** set itemClickListener for LayoutInflater for each row ******/
return convertView;
}
}
对于DataModel.java :
public class DataModel {
private String language;
public DataModel(String language) {
this.language = language;
}
/****** get methods ******/
public String getLanguage() {
return this.language;
}
/****** set methods ******/
public void setLanguage(String language) {
this.language = language;
}
} // end class DataModel
这里是故障转储:
10-12 08:53:01.135 1134-1134/com.blogspot.joyouslybeingjoy.merrychristmas
W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xb3a86ba8)
10-12 08:53:01.155 1134-1134/com.blogspot.joyouslybeingjoy.merrychristmas
E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.blogspot.joyouslybeingjoy.merrychristmas, PID: 1134
java.lang.ClassCastException: com.blogspot.joyouslybeingjoy.merrychristmas.
DataModel cannot be cast to java.lang.String
at com.blogspot.joyouslybeingjoy.merrychristmas.MainActivity.
onItemClick(MainActivity.java:102)
at android.widget.AdapterView.performItemClick(AdapterView.java:299)
at android.widget.AbsListView.performItemClick(AbsListView.java:1113)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:2904)
at android.widget.AbsListView$3.run(AbsListView.java:3638)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
在此先感谢!我确实在学习很多东西,并乐在其中!感谢支持!
你能否标出主要活动的第102行,以便我们知道错误发生的位置? – 2014-10-12 13:09:41
请重构。任何时候你有大量的代码都是由一行代码所不同,并且你正在比较一个单一的值,你可以并且应该重构。 – 2014-10-12 13:23:18
正在重新运行以获取适当的行号。行号102被注释掉了,所以必须得到一个更好的错误信息。对于重构评论,我承认我是一个新手,我不太确定你在说什么。我之前使用过重构,但那是因为名称变化等原因。谢谢你们,感谢! – 999 2014-10-12 17:37:40