Изображение Android не загружено в пользовательский адаптер - PullRequest
0 голосов
/ 03 марта 2011

У меня есть список моих друзей на Facebook, и я создал список, в котором есть разделитель в месяцах с января по декабрь

Я могу перечислить детали своих друзей, моя проблема в том, что я могу показать их Имя и дату рождения, если я попытаюсь загрузить их "ФОТОГРАФИИ", я не могу это сделать ..

Это показывает мне значок, установленный в качестве фона в 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;
    }

}

Ответы [ 3 ]

1 голос
/ 03 марта 2011

Вам необходимо установить растровое изображение вашего ImageView, используя один из вызовов setImageFoo ().

1 голос
/ 03 марта 2011

Я не уверен, что тип объекта mData.get(position).picture, но

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

не загружает картинку. Это просто установка некоторых данных в представлении. Вам необходимо использовать один из setImage () методов ImageView .

0 голосов
/ 03 марта 2011

Ваш код выглядит нормально, возможно, проблема с файлом xml / layout.

Поскольку вы загружаете два textViews и ImageView из xml для каждого элемента, важно знать, как работает layoutорганизован таким образом, чтобы показывать все добавленные виды.

Пожалуйста, опубликуйте файлы макетов, чтобы можно было предложить, если есть какие-либо проблемы.

...