ciao a tutti...in android ho creato un file Manager.....
il cod. è questo:
l'activity:codice:import java.io.File; import java.util.ArrayList; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; public class CustomAdapter extends ArrayAdapter<File> { private ArrayList<File> items; private Context c = null; /** * Standard Data Adapter Construction */ public CustomAdapter(Context context, int textViewResourceId, ArrayList<File> items) { super(context, textViewResourceId, items); this.items = items; this.c = context; } /** * Code invoked when container notifies data set of change. */ @Override public View getView(int position, View convertView, ViewGroup parent) { View v = convertView; if (v == null) { LayoutInflater vi = (LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = vi.inflate(R.layout.list_row, null); } TextView filename = null; ImageView fileicon = null; File f = items.get(position); if (f != null) { filename = (TextView) v.findViewById(R.id.filename); fileicon = (ImageView) v.findViewById(R.id.fileicon); } if (filename != null) { if (position == 0) { filename.setText(f.getAbsolutePath()); } else if (position == 1) { filename.setText(f.getAbsolutePath()); } else { filename.setText(f.getName()); } } if (fileicon != null) { if (position == 0) { fileicon.setImageResource(R.drawable.root); } else if (position == 1) { fileicon.setImageResource(R.drawable.up); } else if (f.isDirectory()) { fileicon.setImageResource(R.drawable.folder); } else { fileicon.setImageResource(R.drawable.file); } } return v; } }
con questo cod. creo un File Manager dove all'evento click del file ricevo un messaggio con la path del file clikkato:codice:import java.io.File; import java.util.ArrayList; import android.app.ListActivity; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.widget.ListView; import android.widget.Toast; public class FileBrowser3 extends ListActivity { private File mCurrentNode = null; private File mLastNode = null; private File mRootNode = null; private ArrayList<File> mFiles = new ArrayList<File>(); private CustomAdapter mAdapter = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_file_browser3); mAdapter = new CustomAdapter(this, R.layout.list_row, mFiles); setListAdapter(mAdapter); if (savedInstanceState != null) { mRootNode = (File)savedInstanceState.getSerializable("root_node"); mLastNode = (File)savedInstanceState.getSerializable("last_node"); mCurrentNode = (File)savedInstanceState.getSerializable("current_node"); } refreshFileList(); } private void refreshFileList() { if (mRootNode == null) mRootNode = new File(Environment.getExternalStorageDirectory().toString()); if (mCurrentNode == null) mCurrentNode = mRootNode; mLastNode = mCurrentNode; File[] files = mCurrentNode.listFiles(); mFiles.clear(); mFiles.add(mRootNode); mFiles.add(mLastNode); if (files!=null) { for (int i = 0; i< files.length; i++) mFiles.add(files[i]); } mAdapter.notifyDataSetChanged(); } @Override protected void onSaveInstanceState(Bundle outState) { outState.putSerializable("root_node", mRootNode); outState.putSerializable("current_node", mCurrentNode); outState.putSerializable("last_node", mLastNode); super.onSaveInstanceState(outState); } /** * Listview on click handler. */ @Override public void onListItemClick(ListView parent, View v, int position, long id){ File f = (File) parent.getItemAtPosition(position); if (position == 1) { if (mCurrentNode.compareTo(mRootNode)!=0) { mCurrentNode = f.getParentFile(); refreshFileList(); } } else if (f.isDirectory()) { mCurrentNode = f; refreshFileList(); } else { Toast.makeText(this, "You selected: "+f.getName()+"!", Toast.LENGTH_SHORT).show(); } } }
ora lo stesso File Manager lo vorrei inserire in un alertDialog...come si fa????
Aiuto!!!

Rispondi quotando