有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用CustomAdapter更改ListView的显示方式

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

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
    xmlns:tools="http://schemas.安卓.com/tools"
    安卓:layout_width="match_parent"
    安卓:layout_height="match_parent"
    安卓:paddingBottom="@dimen/activity_vertical_margin"
    安卓:paddingLeft="@dimen/activity_horizontal_margin"
    安卓:paddingRight="@dimen/activity_horizontal_margin"
    安卓:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity"
    安卓:background="@drawable/bginset3" >
        <LinearLayout
            安卓:layout_width="match_parent"
            安卓:layout_height="match_parent"
            安卓:orientation="horizontal"
            安卓:paddingTop="10dp"
            安卓:paddingBottom="10dp"
            安卓:paddingLeft="10dp"
            安卓:paddingRight="10dp"
            安卓:background="@drawable/forfileicon" >
            <RelativeLayout
                安卓:layout_width="match_parent"
                安卓:layout_height="match_parent"
                安卓:background="@安卓:color/white" >
                <ImageView
                    安卓:id="@+id/imgFileIcon"
                    安卓:layout_width="wrap_content"
                    安卓:layout_height="wrap_content"
                    安卓:src="@drawable/ic_launcher"
                    安卓:background="@drawable/forfileicon" />
                <TextView
                    安卓:id="@+id/tvFN"
                    安卓:layout_width="wrap_content"
                    安卓:layout_height="wrap_content"
                    安卓:text=""
                    安卓:textStyle="bold"
                    安卓:paddingTop="10dp"
                    安卓:textColor="#00A21E"
                    安卓:textSize="14dp"
                    安卓:paddingLeft="25dp"
                    安卓:layout_toRightOf="@+id/imgFileIcon" />
                <TextView
                    安卓:id="@+id/tvMD"
                    安卓:layout_width="wrap_content"
                    安卓:layout_height="wrap_content"
                    安卓:text=""
                    安卓:textStyle="bold"
                    安卓:paddingTop="10dp"
                    安卓:textColor="#00A21E"
                    安卓:textSize="14dp"
                    安卓:paddingLeft="25dp"
                    安卓:layout_below="@+id/tvFN"
                    安卓:layout_toRightOf="@+id/imgFileIcon" />
            </RelativeLayout>
        </LinearLayout>
</RelativeLayout>

我的列表视图XML布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
    xmlns:tools="http://schemas.安卓.com/tools"
    安卓:layout_width="match_parent"
    安卓:layout_height="match_parent"
    安卓:paddingBottom="@dimen/activity_vertical_margin"
    安卓:paddingLeft="@dimen/activity_horizontal_margin"
    安卓:paddingRight="@dimen/activity_horizontal_margin"
    安卓:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity"
    安卓:background="@drawable/bginset3" >

    <ListView
        安卓:id="@+id/lvFiles"
        安卓:layout_width="fill_parent"
        安卓:layout_height="wrap_content" >
    </ListView>

</RelativeLayout>

我的Java代码:

package com.test.testing;

import java.io.File;
import java.util.ArrayList;
import java.util.Date;

import 安卓.app.Fragment;
import 安卓.content.Context;
import 安卓.content.Intent;
import 安卓.content.SharedPreferences;
import 安卓.graphics.Color;
import 安卓.os.Bundle;
import 安卓.os.Environment;
import 安卓.text.Editable;
import 安卓.text.TextWatcher;
import 安卓.text.format.DateFormat;
import 安卓.view.LayoutInflater;
import 安卓.view.View;
import 安卓.view.ViewGroup;
import 安卓.view.inputmethod.InputMethodManager;
import 安卓.widget.AdapterView;
import 安卓.widget.ArrayAdapter;
import 安卓.widget.Button;
import 安卓.widget.EditText;
import 安卓.widget.ListView;
import 安卓.widget.RadioGroup;
import 安卓.widget.RadioGroup.OnCheckedChangeListener;
import 安卓.widget.RelativeLayout;
import 安卓.widget.TextView;
import 安卓.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<String> FilesInFolder = GetFiles(folder.getAbsolutePath());
        lv = (ListView) mFrame3.findViewById(R.id.lvFiles);

        lv.setAdapter(new ArrayAdapter<String>(getActivity(), 安卓.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<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 dateString = DateFormat.format("MM/dd/yyyy", new Date(lastTime)).toString();
                    String sizeString = getReadableSize(files[i].length());
                    String fileName = files[i].getName().substring(0, files[i].getName().lastIndexOf(".")); 
                    MyFiles.add("Trip Name: " + fileName + "\nTrip Taken On: " + dateString + "\n" + sizeString);
                }
            }
        }

        return MyFiles;
    }

    public String getReadableSize(long size) {
        String returnSize = "";

        if ((double) size / (1024 * 1024 * 1024) > 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;
    }
}

上面的代码生成了一种非常简单的格式:

enter image description here

我希望在实现CustomAdapter时得到一些帮助,以使用这两个XML文件,从而使其如下所示:

enter image description here


共 (2) 个答案

  1. # 1 楼答案

    您必须扩展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只是我项目中的一个类,我用它来存储数据