如何在listview中显示视频缩略图

时间:2015-01-02 18:02:48

标签: android listview video

我试图在列表视图中显示视频缩略图,视频来自数据库。当我加载普通的图像(http://thepic.com/demi.jpg)时,效果很好。但视频缩略图例如(http://thepic.com/iron.mp4)根本没有显示

这是我的适配器类

public class CategoryListAdapter extends BaseAdapter {
    private Context mContext;
    LayoutInflater inflater;
    private final ArrayList<HashMap<String, String>> urls;
    HashMap<String, String> resultp = new HashMap<String, String>();

    public static final String CATEGORY_LOGO_URL = "http://10.0.2.2/demi.jpg";

    public CategoryListAdapter(Context context,
            ArrayList<HashMap<String, String>> items) {
        mContext = context;
        urls = items;
    }

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

    @Override
    public Object getItem(int position) {
        return position;
    }

    @Override
    public long getItemId(int position) {
        return getItem(position).hashCode();
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        TextView category_name;
        ImageView category_logo;
        TextView item_count;
        TextView item_id;

        inflater = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View view = inflater.inflate(R.layout.custom_list_category, parent,
                false);

        resultp = urls.get(position);

        category_name = (TextView) view.findViewById(R.id.category_name);
        category_logo = (ImageView) view.findViewById(R.id.img_category_logo);
        item_count = (TextView) view.findViewById(R.id.songs_count);
        item_id = (TextView) view.findViewById(R.id.category_id);

        category_name.setText(resultp.get(CategoryActivity.TAG_NAME));
        item_count.setText(resultp.get(CategoryActivity.TAG_CATEGORIES_COUNT));
        item_id.setText(resultp.get(CategoryActivity.TAG_ID));

        Bitmap bmThumbnail;
        bmThumbnail = ThumbnailUtils.createVideoThumbnail(resultp.get(CategoryActivity.TAG_CATEGORIES_LOGO), Thumbnails.MICRO_KIND);
        category_logo.setImageBitmap(bmThumbnail);



        return view;
    }

这是我们的主要活动

公共类CategoryActivity扩展了ListActivity {

    private static final String TAG_POSTS = "posts";
    public static final String TAG_ID = "id";
    public static final String TAG_NAME = "category";
    public static final String TAG_CATEGORIES_COUNT = "categories_count";
    public static final String TAG_CATEGORIES_LOGO = "categories_logo";

    private static final String URL_CATEGORY = "http://10.0.2.2/music/selectm.php";
    private BaseAdapter mAdapter;
    private ListView lv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_category);
        lv = getListView();
        lv.setDivider(null);

        lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View view,int position, long arg3) {

                Toast.makeText(CategoryActivity.this, "Item selected: " + position,
                        Toast.LENGTH_LONG).show();

                // Uncomment this to start a new Activity for a chosen item
                /* Intent i = new Intent(getApplicationContext(),
                        ItemListActivity.class);

                String category_id = ((TextView) view
                        .findViewById(R.id.category_id)).getText()
                        .toString();
                i.putExtra("category_id", category_id);

                startActivity(i);*/
            }
        });

        final Handler handler = new Handler();
        Runnable refresh = new Runnable() {
                @Override
                public void run() {
                    new LoadComments().execute();
                    handler.postDelayed(this, 60 * 1000);
                }
            };
        handler.postDelayed(refresh, 60 * 1000);
    }

    class LoadComments extends AsyncTask<Void, Void, ArrayList<HashMap<String,String>>> {
        private ProgressDialog pDialog;
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(CategoryActivity.this);

            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);

        }

        @Override
        protected ArrayList<HashMap<String, String>> doInBackground(Void... arg0) {

            ArrayList<HashMap<String, String>> categoryList = new ArrayList<HashMap<String, String>>();
            JSONParser jParser = new JSONParser();
            JSONObject json = jParser.getJSONFromUrl(URL_CATEGORY);
            try {
                JSONArray categories = json.getJSONArray(TAG_POSTS);
                for (int i = 0; i < categories.length(); i++) {
                    String id = categories.getJSONObject(i).getString("TAG_ID");
                    String name = categories.getJSONObject(i).getString("TAG_NAME");
                    String songs_count = categories.getJSONObject(i).getString("TAG_CATEGORIES_COUNT");
                    String category_logo = categories.getJSONObject(i).getString("TAG_CATEGORIES_LOGO");

                    HashMap<String, String> map = new HashMap<String, String>();
                    map.put(TAG_ID, id);
                    map.put(TAG_NAME, name);
                    map.put(TAG_CATEGORIES_COUNT, songs_count);
                    map.put(TAG_CATEGORIES_LOGO, category_logo);

                    categoryList.add(map);
                }
            }catch (Throwable e){
                e.printStackTrace();
            }
            return categoryList;
        }

        @Override
        protected void onPostExecute(ArrayList<HashMap<String, String>> result) {
            super.onPostExecute(result);
            if(pDialog.isShowing()){
                pDialog.dismiss();
            }
            mAdapter = new CategoryListAdapter(CategoryActivity.this,result);
            lv.setAdapter(mAdapter);
            mAdapter.notifyDataSetChanged();
        }
    }
}

0 个答案:

没有答案