您的位置:首页 > 其它

实现读取某文件夹下txt、图片,并按钮点击上一个下一个文件中的txt,图片

2017-05-15 22:28 846 查看
忙活许久实现软件读取某文件下图片、txt文字,显示在TextView和ListView上并且两个按钮点击功能为显示下一个文件中的图片、文字,或者上一个的图片、文字importandroid.app.Activity;importandroid.media.MediaScannerConnection;importandroid.net.Uri;importandroid.os.Bundle;importandroid.os.Environment;importandroid.os.Handler;importandroid.util.Log;importandroid.view.View;importandroid.widget.Button;importandroid.widget.ListView;importandroid.widget.TextView;importandroid.widget.Toast;importjava.io.DataOutputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.InputStream;importjava.net.HttpURLConnection;importjava.net.URL;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importstaticcom.example.creationio.TxtScanner.Txt;/***Createdby允琪on2017/5/3.*/publicclassTestActivityextendsActivityimplementsMediaScannerConnection.MediaScannerConnectionClient{List<Object>listpath;publicString[]allFiles;publicString[]allname;publicstaticTestActivitymactivity;publicstaticStringSCAN_PATH;publicstaticfinalStringFILE_TYPE="image/*";publicstaticStringsdPath="/sdcard/File/";publicStringscanpath2;publicstaticMediaScannerConnectionconn;privateTextViewcar_number,out_line_content,out_line_time,out_line_place;privateButtonbtn_submit,btn_next,btn_this;ImageScanner.Myadapteradapter;publicListViewlistView;publicFilefolder,folder2;privateHandlerhandler;privateintflag;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.test_layout);mactivity=this;car_number=(TextView)findViewById(R.id.car_number);out_line_content=(TextView)findViewById(R.id.outline_content);out_line_time=(TextView)findViewById(R.id.outline_time);out_line_place=(TextView)findViewById(R.id.outline_place);btn_submit=(Button)findViewById(R.id.btnsubmit);btn_next=(Button)findViewById(R.id.btnnext);btn_this=(Button)findViewById(R.id.btnthis);//初始化界面显示第一个文件夹中的图片和文字listpath=newArrayList<Object>();listView=(ListView)this.findViewById(R.id.listView1);folder=newFile(sdPath);allFiles=folder.list();//此处显示当前地址sdpath="/sdcard/File/";这里面的文件夹我这里File有1,2,3,4四个文件夹folder2=newFile(sdPath+allFiles[flag]);allname=folder2.list();//此处显示当前地址上面File中1-4个文件夹中的内容,这里flag为全局indexStringaddress=sdPath+allFiles[flag];Strings1=TxtScanner.Txt(address).get(0);//从Mapget(key=0)的value//此处调用TxtScanner中Txt方法,获取文件夹下文字并且每一行读到Map一个键值对里Strings2=TxtScanner.Txt(address).get(1);Strings3=TxtScanner.Txt(address).get(2);Strings4=TxtScanner.Txt(address).get(3);car_number.setText(s1);//几个Text用来显示获取到的文字out_line_content.setText(s2);out_line_time.setText(s3);out_line_place.setText(s4);for(inti=0;i<allname.length;i++){scanpath2=Environment.getExternalStorageDirectory().toString()+"/File/"+allFiles[flag]+"/"+allname[i];
//文件File中1,2,3,4文件夹,其中又各有其他文件
//个人建议在文件问题上多用Log打印和Debug查看地址等,稳!
Log.d("allfile",allFiles[flag]);
if(scanpath2.contains(".jpg")){//这里要把图片地址传递给listView了,必须要过滤txt类型文件,不然listView会有一块空白

listpath.add(scanpath2);
SCAN_PATH=Environment.getExternalStorageDirectory().toString()+"/File/"+allFiles[flag]+"/"+allname[i];//交给listpath的就是这些
Log.d("SCAN_PATH",SCAN_PATH);
startScan();
adapter=newImageScanner.Myadapter(getApplicationContext());
adapter.setdate(listpath);
Log.d("listpath",listpath.toString());
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
}

btn_this.setOnClickListener(newView.OnClickListener(){//其实这是上一个文件夹,不想改了
@Overrid
4000
e					//这里都和onCreate类似,但有一点要注意要清listpath,因为是全局变量,所以显示下一个时会捎上上面查看的图片地址
publicvoidonClick(Viewview){
listpath.clear();			//这里要稳
--flag;
if(flag<0){
Toast.makeText(TestActivity.this,"已经是第一个文件",Toast.LENGTH_SHORT).show();//一定要判断,不然会Bug闪退
}else{
Stringaddress=sdPath+allFiles[flag];
Strings1=TxtScanner.Txt(address).get(0);//从Mapget(key=0)的value
Strings2=TxtScanner.Txt(address).get(1);
Strings3=TxtScanner.Txt(address).get(2);
Strings4=TxtScanner.Txt(address).get(3);
car_number.setText(s1);
out_line_content.setText(s2);
out_line_time.setText(s3);
out_line_place.setText(s4);

folder2=newFile(sdPath+allFiles[flag]);
allname=folder2.list();

for(inti=0;i<allname.length;i++){
scanpath2=Environment.getExternalStorageDirectory().toString()+"/File/"+allFiles[flag]+"/"+allname[i];
Log.d("allfile",allFiles[flag]);
if(scanpath2.contains(".jpg")){

listpath.add(scanpath2);
SCAN_PATH=Environment.getExternalStorageDirectory().toString()+"/File/"+allFiles[flag]+"/"+allname[i];
Log.d("SCAN_PATH",SCAN_PATH);
startScan();
adapter=newImageScanner.Myadapter(getApplicationContext());

adapter.setdate(listpath);
listView.setAdapter(adapter);

adapter.notifyDataSetChanged();
}
}
}
}
});
btn_next.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewview){
listpath.clear();
++flag;
if(flag>allFiles.length-1){
Toast.makeText(TestActivity.this,"已经是最后一个文件",Toast.LENGTH_SHORT).show();
}else{
Stringaddress=sdPath+allFiles[flag];
Strings1=Txt(address).get(0);//从Mapget(key=0)的value
Strings2=Txt(address).get(1);
Strings3=Txt(address).get(2);
Strings4=Txt(address).get(3);
car_number.setText(s1);
out_line_content.setText(s2);
out_line_time.setText(s3);
out_line_place.setText(s4);

folder2=newFile(sdPath+allFiles[flag]);
allname=folder2.list();

for(inti=0;i<allname.length;i++){
scanpath2=Environment.getExternalStorageDirectory().toString()+"/File/"+allFiles[flag]+"/"+allname[i];
Log.d("allfile",allname[i]);
if(scanpath2.contains(".jpg")){

listpath.add(scanpath2);
SCAN_PATH=Environment.getExternalStorageDirectory().toString()+"/File/"+allFiles[flag]+"/"+allname[1];
Log.d("SCAN_PATH",SCAN_PATH);
}
startScan();
adapter=newImageScanner.Myadapter(getApplicationContext());
adapter.setdate(listpath);
Log.d("listpath",listpath.toString());
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
}
}
//Toast.makeText(TestActivity.this,"当前位于:文件夹:"+allFiles[flag],Toast.LENGTH_SHORT).show();
});
}

privatevoidstartScan(){
Log.d("Connected","-->>success"+conn);
if(conn!=null){
conn.disconnect();
}
conn=newMediaScannerConnection(this,this);
conn.connect();
}

@Override
publicvoidonMediaScannerConnected(){
conn.scanFile(SCAN_PATH,FILE_TYPE);
}

@Override
publicvoidonScanCompleted(Stringpath,Uriuri){
try{

}finally{
conn.disconnect();
conn=null;
}
}
ImageScanner类
importandroid.content.Context;importandroid.graphics.Bitmap;importandroid.graphics.BitmapFactory;importandroid.media.MediaScannerConnection;importandroid.net.Uri;importandroid.util.Log;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.BaseAdapter;importandroid.widget.ImageView;importjava.util.List;importstaticcom.example.creationio.TestActivity.FILE_TYPE;importstaticcom.example.creationio.TestActivity.SCAN_PATH;importstaticcom.example.creationio.TestActivity.conn;/***Createdby允琪on2017/5/5.*/publicclassImageScanner{publicstaticclassMyadapterextendsBaseAdapter{privateContextcontext;privateLayoutInflaterinflater;privateList<Object>listpath;//没啥好说的,就这个listPath是从Activity传过来的@SuppressWarnings("unused")publicvoidsetdate(List<Object>path){this.listpath=path;}@SuppressWarnings("static-access")publicMyadapter(Contextcontext){this.context=context;inflater=inflater.from(context);}@OverridepublicintgetCount(){returnlistpath.size();}@OverridepublicObjectgetItem(intposition){returnlistpath.get(position);}@OverridepubliclonggetItemId(intposition){returnposition;}@OverridepublicViewgetView(intposition,ViewconvertView,ViewGroupparent){convertView=null;convertView=inflater.inflate(R.layout.list_layout,null);ImageViewimageView=(ImageView)convertView.findViewById(R.id.imageView1);Bitmapbitmap;Stringname=listpath.get(position).toString();if(name.contains("jpg")&&(!name.contains("txt"))){Log.d("name",name+"find.jpg");bitmap=BitmapFactory.decodeFile(listpath.get(position).toString(),null);imageView.setImageBitmap(bitmap);}elseif(name.contains("txt")){Log.d("findtxt",name);}returnconvertView;}}}
TxtScanner类
importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.InputStreamReader;importjava.util.HashMap;importjava.util.Map;importstaticcom.example.creationio.TestActivity.*;importstaticcom.example.creationio.TestActivity.sdPath;/***Createdby允琪on2017/5/5.*/publicclassTxtScanner{publicstaticMap<Integer,String>Txt(Stringpath){//将读出来的一行行数据使用Map存储StringfilePath=path+"/outline.txt";//手机上地址Map<Integer,String>map=newHashMap<Integer,String>();try{Filefile=newFile(filePath);intcount=0;//初始化key值if(file.isFile()&&file.exists()){//文件存在的前提InputStreamReaderisr=newInputStreamReader(newFileInputStream(file),"GBK");BufferedReaderbr=newBufferedReader(isr);StringlineTxt=null;while((lineTxt=br.readLine())!=null){//一行一行if(!"".equals(lineTxt)){Stringreds=lineTxt.split("\\+")[0];//java正则表达式map.put(count,reds);//依次放到map0,value0;1,value2count++;}}isr.close();br.close();}else{//Toast.makeText(mactivity,"cannotfindfile",Toast.LENGTH_SHORT).show();//找不到文件情况下}}catch(Exceptione){e.printStackTrace();}returnmap;}}
写完终于觉得,唉,终于放松了Test_layout布局<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"><ListViewandroid:id="@+id/listView1"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@+id/textView11"android:layout_alignParentLeft="true"android:layout_alignParentStart="true"android:layout_marginTop="25dp"android:layout_above="@+id/btnnext"></ListView><Buttonandroid:text="上传"android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/btnsubmit"android:layout_alignParentBottom="true"android:layout_alignParentRight="true"android:layout_alignParentEnd="true"/><Buttonandroid:text="上一条"android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/btnthis"android:layout_alignParentBottom="true"android:layout_alignParentLeft="true"android:layout_alignParentStart="true"/><Buttonandroid:id="@+id/btnnext"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="下一条"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"/><TextViewandroid:text="违规内容:"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:id="@+id/textView9"android:layout_below="@+id/textView8"android:layout_alignLeft="@+id/textView8"android:layout_alignStart="@+id/textView8"/><TextViewandroid:text="违规时间:"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="9dp"android:id="@+id/textView10"android:layout_below="@+id/textView9"android:layout_alignRight="@+id/textView8"android:layout_alignEnd="@+id/textView8"/><TextViewandroid:text="违规地点:"android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/textView11"android:layout_marginTop="8dp"android:layout_below="@+id/textView10"android:layout_alignLeft="@+id/textView10"android:layout_alignStart="@+id/textView10"/><TextViewandroid:text="违规内容"android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/outline_content"android:layout_alignBaseline="@+id/textView9"android:layout_alignBottom="@+id/textView9"android:layout_alignLeft="@+id/car_number"android:layout_alignStart="@+id/car_number"/><TextViewandroid:text="违规时间"android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/outline_time"android:layout_alignBaseline="@+id/textView10"android:layout_alignBottom="@+id/textView10"android:layout_alignLeft="@+id/outline_content"android:layout_alignStart="@+id/outline_content"/><TextViewandroid:text="违规地点"android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/outline_place"android:layout_above="@+id/listView1"android:layout_alignLeft="@+id/outline_time"android:layout_alignStart="@+id/outline_time"/><TextViewandroid:text="车牌号"android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/car_number"android:layout_alignBaseline="@+id/textView8"android:layout_alignBottom="@+id/textView8"android:layout_toLeftOf="@+id/btnsubmit"android:layout_toStartOf="@+id/btnsubmit"/><TextViewandroid:text="车牌号:"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="17dp"android:id="@+id/textView8"android:layout_alignParentTop="true"android:layout_toLeftOf="@+id/btnnext"android:layout_toStartOf="@+id/btnnext"android:layout_marginRight="12dp"android:layout_marginEnd="12dp"/></RelativeLayout>list_layout布局<?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="#fffffb"android:orientation="horizontal"android:weightSum="1"><ImageViewandroid:id="@+id/imageView1"android:layout_gravity="center"android:layout_height="249dp"android:layout_width="380dp"/></LinearLayout></RelativeLayout>
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐