0

Facebookの友達のリストを持っていて、1月から12月までの月として区切り文字が付いたリストビューを作成しました。

友達の詳細を一覧表示できます。問題は、友達の「写真」を読み込もうとすると、名前と誕生日を表示できることです。

XMLで背景として設定されたアイコンが表示されます。

ロードする画像のURLもログに出力されますが、画像が取得できません。

これが私のコードです

 private class MyCustomAdapter extends BaseAdapter {
    private static final int TYPE_ITEM = 0;
    private static final int TYPE_SEPARATOR = 1;
    private static final int TYPE_MAX_COUNT = TYPE_SEPARATOR + 1;
    private LayoutInflater mInflater;
    private TreeSet<Integer> mSeparatorsSet = new TreeSet<Integer>();
    public MyCustomAdapter() {
        mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mData = new ArrayList<Category>();
    }
    public void addItem(final Category item) {
        mData.add(item);
        notifyDataSetChanged();
    }
    public void addSeparatorItem(final Category item) {
        mData.add(item);
        // save separator position
        mSeparatorsSet.add(mData.size() - 1);
        notifyDataSetChanged();
    }
    @Override
    public int getItemViewType(int position) {
        return mSeparatorsSet.contains(position) ? TYPE_SEPARATOR : TYPE_ITEM;
    }
    @Override
    public int getViewTypeCount() {
        return TYPE_MAX_COUNT;
    }
    @Override
    public int getCount() {
        return mData.size();
    }
    @Override
    public Category getItem(int position) {
        return mData.get(position);
    }
    @Override
    public long getItemId(int position) {
        return position;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        int type = getItemViewType(position);
        System.out.println("getView " + position + " " + convertView + " type = " + type);
        Category category = mData.get(position);
        holder = new ViewHolder();
        if (convertView == null) {
             switch (type) {
                case TYPE_ITEM:
                    convertView = mInflater.inflate(R.layout.item1, null);
                    holder.textView = (TextView)convertView.findViewById(R.id.text);
                    holder.textView1 = (TextView)convertView.findViewById(R.id.text1);
                    holder.icon = (ImageView) convertView.findViewById(R.id.friend_photo);
                    break;
                case TYPE_SEPARATOR:
                    convertView = mInflater.inflate(R.layout.item2, null);
                    holder.textView = (TextView)convertView.findViewById(R.id.textSeparator);
                    break;
            }
            convertView.setTag(holder);
        } else {
            if(type==TYPE_ITEM){
                 holder.textView = (TextView)convertView.findViewById(R.id.text);
                 holder.textView1 = (TextView)convertView.findViewById(R.id.text1);
                 holder.icon = (ImageView) convertView.findViewById(R.id.friend_photo);
                 holder = (ViewHolder)convertView.getTag();
            }else{
                 holder.textView = (TextView)convertView.findViewById(R.id.textSeparator);
                 holder = (ViewHolder)convertView.getTag();
            }

        }
        if(type==TYPE_SEPARATOR){
             holder.textView.setText(mData.get(position).dealTitle);
        }else{
             holder.textView.setText(mData.get(position).dealTitle);
              holder.textView1.setText(mData.get(position).dealDesc);
              holder.icon.setTag(mData.get(position).picture);
        }


        return convertView;
    }

}
4

3 に答える 3

1

オブジェクトの種類はわかりませんmData.get(position).pictureが、

holder.icon.setTag(mData.get(position).picture);

画像を読み込んでいません。ビューにデータを設定するだけです。ImageViewのsetImage()メソッドのいずれかを使用する必要があります。

于 2011-03-03T18:09:15.697 に答える
1

setImageFoo() 呼び出しのいずれかを使用して ImageView のビットマップを設定する必要があります。

于 2011-03-03T18:10:27.283 に答える
0

コードは正常に見えます。xml/layoutファイルに問題がある可能性があります。

各アイテムのxmlから2つのtextViewとImageViewをロードするため、追加されたすべてのビューを表示するためにレイアウトがどのように編成されているかを知ることが重要です。

問題があるかどうかを提案できるように、レイアウトファイルを投稿してください。

于 2011-03-03T18:19:33.630 に答える