使用ContentProvider實現的音樂檔案的瀏覽器—方式2

來源:互聯網
上載者:User

另一種方式寫法,直接繼承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常用的一些用處我都寫完了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.