Как поместить запрос информации в просмотр списка? - PullRequest
2 голосов
/ 03 августа 2011

У меня есть ListView

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView android:layout_height="wrap_content" android:id="@+id/listView1" android:layout_width="match_parent">
</ListView>
</LinearLayout>

Я получаю запрос информации из фида URL. Вот пример того, как я получаю канал.

            query.setOrderBy(YouTubeQuery.OrderBy.VIEW_COUNT);
            query.setFullTextQuery("basketball");
            query.setSafeSearch(YouTubeQuery.SafeSearch.NONE);
            VideoFeed videoFeed = service.query(query, VideoFeed.class);
            printVideoFeed(videoFeed, true);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ServiceException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }   
}

public void printVideoFeed(VideoFeed videoFeed, boolean detailed){
    videoFeed.getTitle().toString();
    }
}

Как вы видите здесь, я получаю поток информации ... Теперь в этом методе я хотел бы поместить всю информацию в список, содержащий всю информацию.

Например, ListView со строкой. И row.xml содержит imageView и TextView.

Как мне сделать так, чтобы каждый фид устанавливался в строку в виде списка?

РЕДАКТИРОВАТЬ: я пытаюсь получить список видео из поиска с помощью API gdata через Google. Вот код, который я использую ..

public void printVideoEntry(VideoEntry videoEntry, boolean detailed){
    if(detailed){

        YouTubeMediaGroup mediaGroup = videoEntry.getMediaGroup();

        System.out.println("Uploaded by: " + mediaGroup.getUploader());

        //Here i would like to set one of the thumbnails to a imageView.
        mediaGroup.getThumbnails();

        System.out.println("Video ID: " + mediaGroup.getVideoId());
        System.out.println("Description: " + 
          mediaGroup.getDescription().getPlainTextContent());

        MediaPlayer mediaPlayer = mediaGroup.getPlayer();
        System.out.println("Web Player URL: " + mediaPlayer.getUrl());
        MediaKeywords keywords = mediaGroup.getKeywords();
        System.out.print("Keywords: ");
        for(String keyword : keywords.getKeywords()) {
            System.out.print(keyword + ",");
        }
    }
}

Я бы хотел, чтобы он заполнялся в списке каждым заголовком видео и собственным изображением для миниатюры.

1 Ответ

1 голос
/ 03 августа 2011

Вы захотите создать свой собственный адаптер, который должен выглядеть примерно так:

public class MyCustomAdapter extends ArrayAdapter<YourObject> {

private final Context mContext;
private final List<YourObject> objectList;
private final int layout;
private final LayoutInflater inflater;

static class ViewHolder {
    public ImageView objectImage;
    public TextView objectTitle;
}

public MyCustomAdapter(Context context, int layout, List<YourObject> objects) {
    super(context, layout, objects);

    this.mContext = context;
    this.inflater = LayoutInflater.from(context);
    this.layout = layout;
    this.objectList = objects;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder viewHolder;

    if (convertView == null) {
        convertView = inflater.inflate(layout, parent, false);

        viewHolder = new ViewHolder();
        viewHolder.objectImage = (ImageView)convertView.findViewById(R.id.image_id);
        viewHolder.objectTitle = (TextView)convertView.findViewById(R.id.title_id);

        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder)convertView.getTag();
    }


    viewHolder.objectImage.setImageDrawable(mContext.getResources().getDrawable(R.drawable.your_image))
    viewHolder.objectTitle.setText("Title Here");

    return convertView;
}

@Override 
public int getCount() { 
    return objectList.size(); 
}
}

И реализовать его так:

MyCustomAdapter adapter = new MyCustomAdapter(this, R.layout.your_layout, yourObjectArrayList);
ListView list = (ListView)findViewById(R.id.your_list);
list.setAdapter(adapter);

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...