1

答えが欲しい質問があります。

私は2つの配列を持っています、例えば:

String[] name = {"Name Nameson", "Second Name"};
String[] number = {"111 11 111", "222 22 222"};

ListViewに2つのTextViewを1つのアイテムに含める必要があります(これを画像で説明しようとしました)。

私はなんとかf.exを手に入れることができます。単純なリストビューに私の名前の配列

lv.setAdapter(new ArrayAdapter<String>(this, R.layout.single_name, name));

ListViewを含むmain.xml、layout-folderにsingle_name.xmlおよびsingle_number.xmlがあります。

私はこのサイトを初めて利用するため、写真を追加することは許可されていないため、ここで説明します。


ヘッダ


(項目1)

名前Nameson

111 11 111


(項目2)

ミドルネーム

222 22222


そして、これは連絡先の数に応じて続きます。

どんな助けでも大歓迎です:)

前もって感謝します!

4

3 に答える 3

1

リストの各行を表すカスタム アダプタとカスタム ビューを作成する必要があります。

これは、2 つのテキストビューと 1 つのイメージビューを持つリストビューの単純なアダプターの例です。必要に応じて変更してヘッダーを含め、イメージビューを取り出します

package com.aquarius.customlistviewproject;


public class CustomListViewAdapter extends BaseAdapter{


 private ArrayList<String> album_names;

private ArrayList<String> num_photos;

 public Activity context;

public LayoutInflater inflater;

 public CustomListViewAdapter(Activity context, ArrayList<String> album_names ,     ArrayList<String> num_photos){

super();
this.album_names = album_names;
this.num_photos = num_photos;
this.context = context;
this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}


public Object getItem(int position) {
    // TODO Auto-generated method stub
    return null;
}

public long getItemId(int position) {
    // TODO Auto-generated method stub
    return 0;
}

public int getCount() {
    // TODO Auto-generated method stub
    return album_names.size();
}

public class ViewHolder{

    ImageView thumbnail;
    TextView  title;
    TextView photos;
}

public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder holder;

    if(convertView == null){
        holder = new ViewHolder();
        convertView = inflater.inflate(R.layout.listview_row, null);

        holder.thumbnail = (ImageView)convertView.findViewById(R.id.imgViewLogo);
        holder.title = (TextView)convertView.findViewById(R.id.txtViewTitle);
        holder.photos = (TextView)convertView.findViewById(R.id.txtViewDescription);


        convertView.setTag(holder);
    }

    else
        holder = (ViewHolder)convertView.getTag();
        holder.thumbnail.setImageResource(R.drawable.imgview_drawable);

        holder.title.setText(album_names.get(position));
        holder.photos.setText(num_photos.get(position));
    return convertView;
}

}

于 2012-11-01T23:04:52.777 に答える
1

独自のアダプターを作成する必要があります。

これを使用するために変更できます。パフォーマンスを向上させるためにビューホルダーパターンを使用します。

public class WifiListAdapter extends BaseAdapter {

    private ArrayList<Wifi> entries;
    private Location location;
    private boolean withDistance;

    public static class ViewHolder{
        public TextView ssid;
        public TextView crypt;
        public TextView distance;

    }

    public WifiListAdapter(ArrayList<Wifi> entries, Location location) {
        this.entries = entries;
        this.location = location;
        withDistance = true;
    }

    public int getCount() {
        return entries.size();
    }

    public Wifi getItem(int position) {
        return entries.get(position);
    }


    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        View vi = convertView;
        ViewHolder holder;
        if(convertView == null){
            vi =  MyApplication.getLayoutInflater().inflate(R.layout.wifi_list_item, null);
            holder = new ViewHolder();
            holder.ssid = (TextView)vi.findViewById(R.id.wifi_list_ssid);
            holder.crypt = (TextView)vi.findViewById(R.id.wifi_list_crypt);
            holder.distance = (TextView)vi.findViewById(R.id.wifi_list_distance);

            vi.setTag(holder);


        }
        else{
            holder = (ViewHolder)vi.getTag();
        }
        Wifi wifi = entries.get(position);

        holder.ssid.setText(wifi.ssid);

        StringBuilder cryptString = new StringBuilder(20);

        if(wifi.wep == 1)
            cryptString.append("WEP ");
        if(wifi.wpa == 1)
            cryptString.append("WPA ");
        if(wifi.wpa2 == 1)
            cryptString.append("WPA2 ");
        if(wifi.wps == 1)
            cryptString.append("WPS ");
        if(wifi.ess == 1)
            cryptString.append("ESS");


        String distanceString;
        if(withDistance) {
            float[] results = new float[1];
            Location.distanceBetween(location.getLatitude(), location.getLongitude(), wifi.lat, wifi.lng, results);
            distanceString = MyApplication.formatDistance(results[0]);
        } else
            distanceString = "unknown";

        holder.distance.setText(distanceString);

        holder.crypt.setText(cryptString.toString().trim());
        //holder.distance.setText(results[0] + "");


        holder.ssid.setTag(position);
        holder.crypt.setTag(position);
        holder.distance.setTag(position);


        return vi;
    }

}
于 2012-11-01T22:45:13.273 に答える
0

のカスタムアダプターを作成する必要があります

ArrayAdapter<HashMap<String,String>>
于 2012-11-01T21:52:02.767 に答える