使用CustomAdapter更改ListView的显示方式

我想用于自定义适配器的XML:

          

我的列表视图XML布局:

      

我的Java代码:

 package com.test.testing; import java.io.File; import java.util.ArrayList; import java.util.Date; import android.app.Fragment; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Color; import android.os.Bundle; import android.os.Environment; import android.text.Editable; import android.text.TextWatcher; import android.text.format.DateFormat; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.RadioGroup; import android.widget.RadioGroup.OnCheckedChangeListener; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; public class PreviousTrip extends Fragment { int i; String k = ""; @Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState ) { final RelativeLayout mFrame3 = (RelativeLayout) inflater.inflate( R.layout.ptrip, container, false ); File folder = new File(Environment.getExternalStorageDirectory() + "/tc/"); ListView lv; ArrayList FilesInFolder = GetFiles(folder.getAbsolutePath()); lv = (ListView) mFrame3.findViewById(R.id.lvFiles); lv.setAdapter(new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, FilesInFolder)); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView parent, View v, int position, long id) { // Clicking on items Toast.makeText(getActivity(), "Item " + (position + 1) + ": ID" + v, Toast.LENGTH_SHORT).show(); } }); return mFrame3; } public ArrayList GetFiles(String DirectoryPath) { ArrayList MyFiles = new ArrayList(); File f = new File(DirectoryPath); //f.mkdirs(); File[] files = f.listFiles(); if (files.length == 0) return null; else { for (int i=0; i 1.0) { double i = ((double) size / (1024 * 1024 * 1024)) * 100.0; long j = (long) i; double k = (double) j / 100.0; returnSize = k + " GB"; } else if ((double) size / (1024 * 1024) > 1.0) { double i = ((double) size / (1024 * 1024)) * 100.0; long j = (long) i; double k = (double) j / 100.0; returnSize = k + " MB"; } else if ((double) size / (1024) > 1.0) { double i = ((double) size / (1024)) * 100.0; long j = (long) i; double k = (double) j / 100.0; returnSize = k + " KB"; } else { returnSize = size + " bytes"; } return returnSize; } } 

上面的代码产生了一个非常简单的格式:

在此处输入图像描述

我想帮助实现CustomAdapter以使用这两个XML文件,所以我可以像下面这样做:

在此处输入图像描述

您必须扩展BaseAdapter 。 我将从过去的一个项目中为您提供一些代码:

 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 CustomAdapter extends BaseAdapter{ private list_cons[] data; private static LayoutInflater inflater=null; public CustomAdapter(Context context, list_cons[] data){ this.data=data; inflater= (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } public int getCount(){ return data.length; } public Object getItem(int position){ return data[position]; } public long getItemId(int position){ return position; } public View getView(int position, View convertView, ViewGroup parent){ View current= convertView; if(convertView==null) current = inflater.inflate(R.layout.list_item,null); TextView name = (TextView) current.findViewById(R.id.genre_name); ImageView imag = (ImageView) current.findViewById(R.id.list_image); //Setting all values in ListView name.setText(data[position].title); imag.setImageResource(data[position].image_id); return current; }//end of method getView :) } 

list_item是.xml,我在其中定义了列表中每个项目的布局。 list_cons只是我项目中的一个类,我用它来存储数据。

http://www.josecgomez.com/2010/05/03/android-putting-custom-objects-in-listview/

有一个伟大的tutural为您和如何使用适配器在自定义列表视图布局中插入对象。 它的代码不像它看起来那么多。 我已经使用了这段代码,这是一件轻而易举的事。 在列表视图适配器类中,您可以指定要在所需对象上显示该部件的文本视图。