I have the issue…
02-20 02:57:09.854: E/AndroidRuntime(12431): Uncaught handler: thread main exiting due to uncaught exception"
…later…
02-20 02:57:09.864: E/AndroidRuntime(12431): java.lang.ClassCastException: java.util.ArrayList
…in a ListView populated with SQLite, the listView works fine, but later when i try to use onListItemClick, to get the parameters of the item on the list view selected and show it in other layout, the program stops and the DDMS says this “Uncaught handler: thread main exiting due to uncaught exception” later says “java.lang.ClassCastException: java.util.ArrayList” in a ListView” maybe i handled bad my adapter of the Arraylist?
This is my main class:
public class lay_main extends ListActivity
{
public ListView list;
public DBHelper myAdap;
protected SQLiteDatabase db;
public Cursor cursor;
DBHelper Context;
DBHelper ArrayList;
//adapter cAdapter class
protected ListAdapter adapter;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.lay_main);
collectXML();
setupDataBase();
setupAdapter();
}
private void collectXML()
{
list = (ListView)findViewById(android.R.id.list);
}
public void setupDataBase() {
myAdap = new DBHelper(getApplicationContext());
myAdap.insertCourses();
}
public void setupAdapter()
{
if(myAdap.getCourses()!=null)
{
cAdapter adapter = new cAdapter(this, R.layout.list_courses, myAdap.getCourses());
list.setAdapter(adapter);
}
}
public void onListItemClick(ListView parent, View view, int position, long id)
{
super.onListItemClick(parent, view, position, id);
Intent intent = new Intent(this, CourseDetails.class);
Cursor cursor = (Cursor) myAdap.getItem(position);
intent.putExtra("COURSE_ID", cursor.getInt(cursor.getColumnIndex("title")));
startActivity(intent);
}
}
my class CourseDetails for receive and show the data:
public class CourseDetails<BDHelper> extends Activity {
protected TextView tTitle;
protected TextView tInstructor;
protected TextView tLength;
protected TextView tRating;
protected TextView tTopic;
protected TextView tSubject;
protected TextView tDescription;
protected int courseId;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.course_details);
courseId = getIntent().getIntExtra("COURSE_ID", 0);
SQLiteDatabase db = (new DBHelper(this)).getWritableDatabase();
Cursor cursor = db.rawQuery("SELECT title, instructor, length, rating, topic, subject, description FROM courses",
new String[]{"" + courseId});
if (cursor.getCount() == 1)
{
cursor.moveToFirst();
tTitle = (TextView) findViewById(R.id.tTitle);
tTitle.setText(cursor.getString(cursor.getColumnIndex("title")));
tInstructor = (TextView) findViewById(R.id.tInstructor);
tInstructor.setText(cursor.getString(cursor.getColumnIndex("instructor")));
tLength = (TextView) findViewById(R.id.tLength);
tLength.setText(cursor.getString(cursor.getColumnIndex("length")));
tRating = (TextView) findViewById(R.id.tRating);
tRating.setText(cursor.getString(cursor.getColumnIndex("rating")));
tTopic = (TextView) findViewById(R.id.tTopic);
tTopic.setText(cursor.getString(cursor.getColumnIndex("topic")));
tSubject = (TextView) findViewById(R.id.tSubject);
tSubject.setText(cursor.getString(cursor.getColumnIndex("subject")));
tDescription = (TextView) findViewById(R.id.tDescription);
tDescription.setText(cursor.getString(cursor.getColumnIndex("description")));
}
}}
My Adapter class:
public class cAdapter extends ArrayAdapter {
Context context;
ArrayList<Courses> courses;
@SuppressWarnings("unchecked")
public cAdapter(Context context, int layout_id, ArrayList<Courses> Courses) {
super(context, layout_id, Courses);
this.context=context;
this.courses=Courses;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.list_courses, null);
try{
//components
TextView txt_title=(TextView)row.findViewById(R.id.txt_title);
TextView txt_instructor=(TextView)row.findViewById(R.id.txt_instructor);
TextView txt_length=(TextView)row.findViewById(R.id.txt_length);
TextView txt_rating=(TextView)row.findViewById(R.id.txt_rating);
TextView txt_topic=(TextView)row.findViewById(R.id.txt_topic);
//asign values
txt_title.setText(courses.get(position).title);
txt_instructor.setText(courses.get(position).instructor);
txt_length.setText(courses.get(position).length);
txt_rating.setText(courses.get(position).rating);
txt_topic.setText(courses.get(position).topic);
}catch(Exception ex){}
return row;
}
}
not that I’m doing wrong, really would appreciate your help.
Override getItem method of adapter and return Cources Object from getItem,
and in SetupAdapter method:
and change on itemClick as follows: