gridview中的图像显示在模拟器中但不在设备中

时间:2013-07-09 05:33:18

标签: android

我有一个图像gridView,我正在使用网址中的图片。

它在模拟器中正常工作,但图像未显示在设备中。 logcat中没有错误。以下是我试过的代码。

public class Home extends Fragment implements TabHost.OnTabChangeListener,
        OnClickListener {

    TabHost tabHost;
    View vi;
    StaggeredAdapter adapter;
    TextView tv;
    public String urls[] = {

    "http://farm9.staticflickr.com/8462/8005636463_0cb4ea6be2.jpg",
            "http://farm8.staticflickr.com/7232/6913504132_a0fce67a0e_c.jpg",
            "http://farm5.staticflickr.com/4133/5096108108_df62764fcc_b.jpg",
            "http://farm5.staticflickr.com/4074/4789681330_2e30dfcacb_b.jpg",
            "http://farm9.staticflickr.com/8208/8219397252_a04e2184b2.jpg",
            "http://farm9.staticflickr.com/8483/8218023445_02037c8fda.jpg",
            "http://farm9.staticflickr.com/8335/8144074340_38a4c622ab.jpg",
            "http://farm9.staticflickr.com/8060/8173387478_a117990661.jpg",
            "http://farm9.staticflickr.com/8056/8144042175_28c3564cd3.jpg",
            "http://farm9.staticflickr.com/8183/8088373701_c9281fc202.jpg",
            "http://farm9.staticflickr.com/8185/8081514424_270630b7a5.jpg",
            "http://farm9.staticflickr.com/8462/8005636463_0cb4ea6be2.jpg",
            "http://farm9.staticflickr.com/8306/7987149886_6535bf7055.jpg",
            "http://farm9.staticflickr.com/8444/7947923460_18ffdce3a5.jpg",
            "http://farm9.staticflickr.com/8182/7941954368_3c88ba4a28.jpg",
            "http://farm9.staticflickr.com/8304/7832284992_244762c43d.jpg",
            "http://farm9.staticflickr.com/8163/7709112696_3c7149a90a.jpg",
            "http://farm8.staticflickr.com/7127/7675112872_e92b1dbe35.jpg",
            "http://farm8.staticflickr.com/7111/7429651528_a23ebb0b8c.jpg",
            "http://farm9.staticflickr.com/8288/7525381378_aa2917fa0e.jpg",
            "http://farm6.staticflickr.com/5336/7384863678_5ef87814fe.jpg",
            "http://farm8.staticflickr.com/7102/7179457127_36e1cbaab7.jpg",
            "http://farm8.staticflickr.com/7086/7238812536_1334d78c05.jpg",
            "http://farm8.staticflickr.com/7243/7193236466_33a37765a4.jpg",
            "http://farm8.staticflickr.com/7251/7059629417_e0e96a4c46.jpg",
            "http://farm8.staticflickr.com/7084/6885444694_6272874cfc.jpg" };

    public static final String ARG_SECTION_NUMBER = "section_number";
    public StaggeredGridView PremiumgridView;
    public StaggeredGridView FeaturedgridView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        vi = inflater.inflate(R.layout.home, container, false);
        Button iv = (Button) vi.findViewById(R.id.btnMoreDialog);
        iv.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                PopupMenu homepopup = new PopupMenu(getActivity(), v);

                MenuInflater inflater = homepopup.getMenuInflater();

                inflater.inflate(R.menu.moredialog, homepopup.getMenu());

                homepopup.show();

            }
        });

        PremiumgridView = (StaggeredGridView) vi.findViewById(R.id.premiumstaggeredGridView);

        new Dialogs().execute(urls);

        return vi;
    }

    private class Dialogs extends AsyncTask<String[], Void, String[]> {
        @Override
        protected String[] doInBackground(String[]... params) {
            return params[0];
        }

        protected void onPostExecute(String[] result) {
            Log.d("url", result[0]);
            String new_string = result[0].replaceAll("http://", "www.");
            Log.d("urls", new_string);

            // Premium Dialog

            int premiummargin = getResources().getDimensionPixelSize(R.dimen.margin);
            PremiumgridView.setItemMargin(premiummargin);
            PremiumgridView.setPadding(premiummargin, 0, premiummargin, 0);

            StaggeredAdapter premiumadapter = new StaggeredAdapter(vi.getContext(),
                    R.id.photoimageview, result, R.layout.row_staggered_demo);

            PremiumgridView.setAdapter(premiumadapter);
            premiumadapter.notifyDataSetChanged();
        }

        @Override
        protected void onPreExecute() {
            // nothing to do
        }
    }
}

我的适配器类

StaggeredAdapter.java

public class StaggeredAdapter extends ArrayAdapter<String> implements
        OnClickListener {

    private ImageLoader mLoader;
    private int _row;
    private Context _context;

    public StaggeredAdapter(Context context, int textViewResourceId,
            String[] objects, int row) {
        super(context, textViewResourceId, objects);
        _context = context;
        mLoader = new ImageLoader(context);
        _row = row;
    }

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

        if (convertView == null) {
            LayoutInflater layoutInflator = LayoutInflater.from(getContext());
            convertView = layoutInflator.inflate(R.layout.row_staggered_demo, null);
            holder = new ViewHolder();
            holder.imageView = (ScaleImageView) convertView
                    .findViewById(R.id.photoimageview);

            convertView.setTag(holder);
        }

        holder = (ViewHolder) convertView.getTag();

        mLoader.DisplayImage(getItem(position), holder.imageView);

        return convertView;
    }

    static class ViewHolder {
        ScaleImageView imageView;
        LinearLayout view;
    }

    public void onClick(View v) {
        Toast.makeText(_context, "buffering......... please wait...",
                Toast.LENGTH_LONG).show();
    }
}

有任何想法或建议吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

检查设备上的可用空间必须少一些。这样它就无法从SD卡中检索图像。您的设备必须与互联网连接。

否则你必须在清单中给出这个

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

没有其他问题。