Reputation: 9225
MY CustomListViewAdapter class which I took from another example and tried to put it together but I am stuck:
package com.test.testing;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class CustomListViewAdapter extends BaseAdapter {
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
public CustomListViewAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.customlist, null);
TextView fileName = (TextView)vi.findViewById(R.id.tvFileName); // filename
TextView lastMod = (TextView)vi.findViewById(R.id.tvLastMod); // artist name
ImageView thumb_image = (ImageView)vi.findViewById(R.id.list_image); // thumb image
HashMap<String, String> song = new HashMap<String, String>();
song = data.get(position);
// Setting all values in listview
fileName.setText(song.get(PreviousTrip.FilesInFolder)); //set the name for FILENAME?
lastMod.setText(song.get(PreviousTrip.FileLastModified)); //set the file modified date for FileLastModified?
thumb_image.setImageResource(R.drawable.ic_launcher); //keep the same image for all files?
return vi;
}
}
My PrevTrip class which calls the CustomListViewAdapter class:
public class PreviousTrip extends Fragment {
ArrayList<String> FilesInFolder, FileLastModified, FileSize;
File folder;
ListView lv;
@Override
public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState ) {
final RelativeLayout mFrame3 = (RelativeLayout) inflater.inflate( R.layout.ptrip, container, false );
folder = new File(Environment.getExternalStorageDirectory() + "/tc");
FilesInFolder = GetFiles(folder.getAbsolutePath());
FileLastModified = GetFileLM(folder.getAbsolutePath());
lv = (ListView) mFrame3.findViewById(R.id.lvFiles);
lv.setAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, FilesInFolder));
}
public ArrayList<String> GetFiles(String DirectoryPath) {
ArrayList<String> MyFiles = new ArrayList<String>();
File f = new File(DirectoryPath);
//f.mkdirs();
File[] files = f.listFiles();
if (files.length == 0)
return null;
else {
for (int i=0; i<files.length; i++) {
if (files[i].getName().endsWith(".tol")) {
long lastTime = files[i].lastModified();
String fileName = files[i].getName().substring(0, files[i].getName().lastIndexOf("."));
MyFiles.add(fileName);
}
}
}
return MyFiles;
}
public ArrayList<String> GetFileLM(String DirectoryPath) {
ArrayList<String> MyFiles = new ArrayList<String>();
File f = new File(DirectoryPath);
//f.mkdirs();
File[] files = f.listFiles();
if (files.length == 0)
return null;
else {
for (int i=0; i<files.length; i++) {
if (files[i].getName().endsWith(".tol")) {
long lastTime = files[i].lastModified();
String dateString = DateFormat.format("MM/dd/yyyy", new Date(lastTime)).toString();
MyFiles.add(dateString);
}
}
}
return MyFiles;
}
}
I am having an issue with these lines as based on my app, it's not making sense:
HashMap<String, String> song = new HashMap<String, String>();
song = data.get(position);
// Setting all values in listview
fileName.setText(song.get(PreviousTrip.FilesInFolder)); //set the name for FILENAME?
lastMod.setText(song.get(PreviousTrip.FileLastModified)); //set the file modified date for FileLastModified?
thumb_image.setImageResource(R.drawable.ic_launcher); //keep the same image for all files?
I am suppose to replace:
lv = (ListView) mFrame3.findViewById(R.id.lvFiles);
lv.setAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, FilesInFolder));
with this which I understand:
lv=(ListView)findViewById(R.id.lvFiles);
// Getting adapter by passing xml data ArrayList
adapter=new LazyAdapter(this, songsList);
list.setAdapter(adapter);
But Instead of songsList
How do I pass the FilesInFolder
and FileLastModified
?
Upvotes: 0
Views: 121
Reputation: 44571
I may be wrong because I'm not sure of the exact problem you are having but I think you want to get a specific String
from your ArrayList
so you would want something like
fileName.setText(song.get(PreviousTrip.FilesInFolder.get(position))); // use the position in your Adapter to get that location in your ArrayList
lastMod.setText(song.get(PreviousTrip.FileLastModified.get(position)));
It also looks like the Adapter
is currently accepting a HashMap
but you have an ArrayList
so change its constructor to
public CustomListViewAdapter(Activity a, ArrayList<String> d)
Upvotes: 1