激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Android - Android通過LIstView顯示文件列表的兩種方法介紹

Android通過LIstView顯示文件列表的兩種方法介紹

2021-02-01 15:40Android開發網 Android

過ListView顯示SD卡中的文件列表一共有兩種方法,一是:通過繼承ListActivity顯示;二是:利用BaseAdapter顯示,具體實現如下,感興趣的朋友可以參考下哈

在android中通過listview顯示sd卡中的文件列表一共有兩種方法,一是:通過繼承listactivity顯示;二是:利用baseadapter顯示。baseadapter是一個公共基類適配器,用于對listview和spinner等 一些控件提供顯示數據。下面是利用baseadapter類來實現通過listview顯示sd卡的步驟:

1.main.xml界面設計,如下圖

復制代碼 代碼如下:


<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<textview
android:id="@+id/txt_path"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<button
android:id="@+id/but_up"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="向上" />
<listview
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</listview>
</linearlayout>
main.xml


2.item.xml界面設計,如下圖

復制代碼 代碼如下:


<?xml version="1.0" encoding="utf-8"?>
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativelayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<textview
android:id="@+id/txt_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignparentright="true"
android:layout_alignparenttop="true"
android:text="textview" />
<imageview
android:id="@+id/image_ico"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignparentleft="true"
android:layout_below="@+id/txt_size"
android:layout_marginleft="18dp"
android:src="@drawable/folder" />
<textview
android:id="@+id/txt_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignbottom="@+id/image_ico"
android:layout_alignparentright="true"
android:text="textview" />
</relativelayout>
item.xml


Android通過LIstView顯示文件列表的兩種方法介紹 
效果圖main.xml
Android通過LIstView顯示文件列表的兩種方法介紹
效果圖item.xml
3.file_adter類的實現

復制代碼 代碼如下:


package com.cqvie;
import java.io.file;
import java.util.linkedlist;
import java.util.list;
import android.app.activity;
import android.graphics.bitmap;
import android.graphics.bitmapfactory;
import android.view.view;
import android.view.viewgroup;
import android.widget.baseadapter;
import android.widget.imageview;
import android.widget.textview;
public class file_adter extends baseadapter {
public activity activity; //創建view時必須要提供context
public list<file> list=new linkedlist<file>(); //數據源(文件列表)
public string currpath;//當前路徑
private bitmap bmp_folder,bmp_file;
public int getcount() {
// todo auto-generated method stub
return list.size();
}
public object getitem(int arg0) {
// todo auto-generated method stub
return null;
}
public long getitemid(int position) {
// todo auto-generated method stub
return position;
}
public view getview(int position, view arg1, viewgroup arg2) {
// todo auto-generated method stub
view v=view.inflate(activity,r.layout.item,null);
textview txt_name=(textview) v.findviewbyid(r.id.txt_name);
textview txt_size=(textview) v.findviewbyid(r.id.txt_size);
imageview img=(imageview) v.findviewbyid(r.id.image_ico);
file f=list.get(position);
txt_name.settext(f.getname());
txt_size.settext(getfilessize(f));
if(f.isdirectory())
img.setimagebitmap(bmp_folder);
else
img.setimagebitmap(bmp_file);
return v;
}
public void scanfiles(string path)
{
list.clear();
file dir=new file(path);
file[] subfiles=dir.listfiles();
if(subfiles!=null)
for(file f:subfiles)
list.add(f);
this.notifydatasetchanged();
currpath=path;
}
public file_adter(activity activity)
{
this.activity=activity;
bmp_folder=bitmapfactory.decoderesource(activity.getresources(),r.drawable.folder);//文件夾,decoderesource圖片解碼,source資源,解碼為bitmap類型;
bmp_file=bitmapfactory.decoderesource(activity.getresources(),r.drawable.file);//文件
}
public static string getfilessize(file f)
{
int sub_index=0;
string show="";
if(f.isfile())
{
long length=f.length();
if(length>=1073741824)
{
sub_index=string.valueof((float)length/1073741824).indexof(".");
show=((float)length/1073741824+"000").substring(0,sub_index+3)+"gb";
}
else if(length>=1048576)
{
sub_index=(string.valueof((float)length/1048576)).indexof(".");
show=((float)length/1048576+"000").substring(0,sub_index+3)+"gb";
}
else if(length>=1024)
{
sub_index=(string.valueof((float)length/1024)).indexof(".");
show=((float)length/1024+"000").substring(0,sub_index+3)+"gb";
}
else if(length<1024)
show=string.valueof(length)+"b";
}
return show;
}
}
file_adter.java


4.file_listactivity的實現

復制代碼 代碼如下:


package com.cqvie;
import java.io.file;
import android.app.activity;
import android.os.bundle;
import android.view.view;
import android.view.view.onclicklistener;
import android.widget.adapterview;
import android.widget.adapterview.onitemclicklistener;
import android.widget.button;
import android.widget.listview;
import android.widget.textview;
public class file_listactivity extends activity implements onitemclicklistener, onclicklistener {
/** called when the activity is first created. */
@override
public void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.main);
list_view=(listview) findviewbyid(r.id.list_view);
but_up=(button) findviewbyid(r.id.but_up);
txt_path=(textview) findviewbyid(r.id.txt_path);
file_adter adter=new file_adter(this);
list_view.setadapter(adter);
list_view.setonitemclicklistener(this);
adter.scanfiles("/");
but_up.setonclicklistener(this);
}
listview list_view;
textview txt_path;
button but_up;
public void onclick(view v) {
// todo auto-generated method stub
file_adter ad=(file_adter) list_view.getadapter();
if(ad.currpath.equals("/")) return;
file f=new file(ad.currpath);
txt_path.settext(f.getparent());
ad.scanfiles(f.getparent());
}
public void onitemclick(adapterview<?> parent, view v, int positiong, long id) {
// todo auto-generated method stub
file_adter da=(file_adter) list_view.getadapter();
file f=da.list.get(positiong);
if(f.isdirectory())
{
txt_path.settext(f.getpath());
da.scanfiles(f.getpath());
}
}
}
file_listactivity.java


Android通過LIstView顯示文件列表的兩種方法介紹
效果圖展示 
總結
在做這個file_adter的時候,需要注意的有三點,一是在新建文件列表類的時候要繼承baseadapter,并且一定不要勾選主方法。二是要在res\drawable-hdpi中添加用于顯示文件和文件夾的圖片。三是在item.xml的設計時需把change layout中new layout type的值設為linearlayout,這樣就方便我們隨意放置imageview和textview的位置,從而有利于軟件的美觀。第一次做這個顯示sd卡中的文件列表時就失敗了,后來就不愛去碰它,不愛去解決這個問題。導致這個問題一直沒有解決,后來是迫于考試沒法就去重新做,才發現其實沒有什么問題,一直做下來都很順暢。這使我明白了可怕的不是問題,而是沒有去解決問題的恒心和懶惰的心理。其實有的問題它其實只是很簡單的問題只要輕輕松松的就解決了,而不是什么重大的問題。在日常生活和學習中我們應該簡單的看待問題。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 九九热视频免费观看 | 亚洲精品久久久久久久久久 | 日韩黄色成人 | 国产在线色 | 91久久线看在观草草青青 | 欧美性受xxxx白人性爽 | www中文在线 | 久久久噜噜噜久久熟有声小说 | www.99xxxx.com| 香蕉久久久久 | 精品成人av一区二区在线播放 | 综合网日日天干夜夜久久 | 成人性爱视频在线观看 | 色柚视频网站ww色 | 国产亚洲欧美日韩高清 | 国产精品18久久久久久久久 | a黄在线观看 | 操操电影 | 亚洲一区二区中文字幕在线观看 | 毛片免费网 | 亚洲免费视频大全 | 黄色av.com| 青草av.久久免费一区 | 久久久成人精品视频 | 色玖玖综合 | 精品一区在线视频 | 神马久久精品综合 | 毛片在线免费 | 欧美一级免费视频 | 亚洲欧美日韩精品久久亚洲区 | 日韩精品一区二区三区中文 | 色视频欧美 | 又黄又爽免费无遮挡在线观看 | 成人免费自拍视频 | 欧美一级爱操视频 | 欧美成在线视频 | 在线成人精品视频 | 国产一级性生活视频 | 欧美一级高清片在线 | 超碰97人 | 国产免费黄网 |