So I wrote this code which gets the video from the sd card and displays it in a listview, but when I start it, the app automatically crashes. Here's the code:
private String[] videolist;
private String[] address;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video_player);
getSupportActionBar().hide();
ListView lv = (ListView)findViewById(R.id.lv);
videolist = getVideolist();
address = getAddresslist();
ArrayAdapter<String> mAdapter = new ArrayAdapter<>(this,android.R.layout.activity_list_item,videolist);
lv.setAdapter(mAdapter);
lv.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id){
String path = videolist[position];
Intent i = new Intent(VideoPlayer.this,VideoV.class);
i.putExtra("path2", path);
startActivity(i);
}
@Override
public void onNothingSelected(AdapterView<?> parent){
}
});
}
private String[] getAddresslist(){
final Cursor mCursor = getContentResolver().query(
MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
new String[] {MediaStore.Video.Media.DISPLAY_NAME,MediaStore.Video.Media.DATA},
null, null,
"LOWER(" + MediaStore.Video.Media.TITLE + ") ASC"
);
int count = mCursor.getCount();
String[] mVideoPath = new String[count];
int i = 0;
if (mCursor.moveToFirst()){
do{
mVideoPath[i] = mCursor.getString(mCursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA));
i++;
}while(mCursor.moveToNext());
}
mCursor.close();
return mVideoPath;
}
private String[] getVideolist(){
final Cursor mCursor = getContentResolver().query(
MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
new String[] {MediaStore.Video.Media.DISPLAY_NAME, MediaStore.Video.Media.DATA},
null, null,
"LOWER(" + MediaStore.Video.Media.TITLE + ") ASC"
);
int count = mCursor.getCount();
String[] mVideoList = new String[count];
int i = 0;
if(mCursor.moveToFirst()){
do{
mVideoList[i] = mCursor.getString(mCursor.getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME));
i++;
}while(mCursor.moveToNext());
}
mCursor.close();
return mVideoList;
}
It does not even go into that activity. Is there anything wrong with the code. Please help me out.Log Cat info:
01-18 10:47:02.243 10109-10109/app.my.com.bonesapp W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x400207d8)01-18 10:47:02.353 10109-10109/app.my.com.bonesapp E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:347)
at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
at android.widget.AbsListView.obtainView(AbsListView.java:1448)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1273)
at android.widget.ListView.onMeasure(ListView.java:1184)
at android.view.View.measure(View.java:8171)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:578)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:362)
at android.view.View.measure(View.java:8171)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
at android.view.View.measure(View.java:8171)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
at android.support.v7.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:453)
at android.view.View.measure(View.java:8171)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
at android.view.View.measure(View.java:8171)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
at android.view.View.measure(View.java:8171)
at android.view.ViewRoot.performTraversals(ViewRoot.java:801)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4633)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassCastException: android.widget.LinearLayout
at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:34 at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323 at
android.widget.AbsListView.obtainView(AbsListView.java:1448)at