另一種方式寫法,直接繼承BaseAdapter並且實現裡面的方法即可使用
1.主布局檔案如下,很簡單,直接就是listView控制項
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" > </ListView></LinearLayout>
2.主java檔案
package com.example.democontent;import android.app.Activity;import android.os.Bundle;import android.widget.ListView;public class MainActivity4 extends Activity {private ListView listView;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_main3);listView = (ListView) findViewById(R.id.listView1);MySimpleAdapter mySimpleAdapter = new MySimpleAdapter(MainActivity4.this);listView.setAdapter(mySimpleAdapter);}}
3.這個類可以直接使用是因為我們繼承了這個類。繼承的類如下
package com.example.democontent;import java.util.ArrayList;import java.util.List;import android.content.ContentResolver;import android.content.Context;import android.database.Cursor;import android.provider.MediaStore.Audio.Media;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;public class MySimpleAdapter extends BaseAdapter {private Context context;private List<Music> musics;private ContentResolver resolver;private Music music;private Cursor cursor;public MySimpleAdapter(Context context) {// TODO Auto-generated constructor stubthis.context = context;resolver = context.getContentResolver();musics = new ArrayList<Music>();cursor = resolver.query(Media.EXTERNAL_CONTENT_URI, null, null, null,null);while (cursor.moveToNext()) {music = new Music();String name = cursor.getString(cursor.getColumnIndex(Media.DISPLAY_NAME));String path = cursor.getString(cursor.getColumnIndex(Media.DATA));String size = cursor.getString(cursor.getColumnIndex(Media.SIZE));size = Double.parseDouble(size) / 1024 / 1024 + "";// 設定為MBString artist = cursor.getString(cursor.getColumnIndex(Media.ARTIST));String album = cursor.getString(cursor.getColumnIndex(Media.ALBUM));String _id = cursor.getString(cursor.getColumnIndex(Media._ID));String duration = cursor.getString(cursor.getColumnIndex(Media.DURATION));int minute = Integer.parseInt(duration) / 1000 / 60;int second = Integer.parseInt(duration) / 1000 % 60;duration = minute + "分" + second + "秒";music.set_id(_id);music.setAlbum(album);music.setArtist(artist);music.setDuration(duration);music.setName(name);music.setPath(path);music.setSize(size);musics.add(music);}cursor.close();}public int getCount() {// TODO Auto-generated method stubreturn musics.size();}public Object getItem(int position) {// TODO Auto-generated method stubreturn musics.get(position);}public long getItemId(int arg0) {// TODO Auto-generated method stubreturn 0;}public View getView(int position, View arg1, ViewGroup parent) {// TODO Auto-generated method stubView view = LayoutInflater.from(context).inflate(R.layout.item, null);TextView tv1 = (TextView) view.findViewById(R.id.textView1);TextView tv2 = (TextView) view.findViewById(R.id.textView2);TextView tv3 = (TextView) view.findViewById(R.id.textView3);TextView tv4 = (TextView) view.findViewById(R.id.textView4);TextView tv5 = (TextView) view.findViewById(R.id.textView5);TextView tv6 = (TextView) view.findViewById(R.id.textView6);TextView tv7 = (TextView) view.findViewById(R.id.textView7);tv1.setText("名字:" + musics.get(position).getName());tv2.setText("路徑:" + musics.get(position).getPath());tv3.setText("大小:" + musics.get(position).getSize() + "MB");tv4.setText("藝術家:" + musics.get(position).getArtist());tv5.setText("專輯名:" + musics.get(position).getAlbum());tv6.setText("id號:" + musics.get(position).get_id());tv7.setText("時間長度:" + musics.get(position).getDuration());return view;}}
4.所繼承類中每一個listView中的listItem都是一個布局,布局如下,很簡單,都是textView
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/textView5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/textView6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/textView7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" /></LinearLayout>
5.好了,至此,ContentProvider常用的一些用處我都寫完了。