【问题标题】:GridView dosen't display image from web serverGridView 不显示来自 Web 服务器的图像
【发布时间】:2016-04-28 15:14:17
【问题描述】:

我创建了一个应用程序,它将获取图片并将其显示在 GridView 中。 图像是数据库上的 base64 编码,在我的应用程序中我解码图像。 我使用 jtds.jar 库文件连接 coma 数据库 当服务器在本地时,应用程序工作正常 当在 Web 服务器上时,图像不会出现在 Gridview 上。 坦克寻求帮助。

公共类 HomeFragment 扩展 Fragment {

ConnectionClass connectionClass;

GridView gridView;

// ProgressBar pbbar;

MenuProdutoAdapter adapter;

public HomeFragment() {
    // Required empty public constructor
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    connectionClass = new ConnectionClass();



        FillGrid fillGrid = new FillGrid();
        fillGrid.execute("");

        Toast.makeText(getActivity(), "Internet nao esta disponivel", Toast.LENGTH_LONG).show();



}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_home, container, false);

    gridView = (GridView) rootView.findViewById(R.id.gridView1);

 //   pbbar = (ProgressBar) rootView.findViewById(R.id.pbbar);
 //   pbbar.setVisibility(View.GONE);

    // Inflate the layout for this fragment


    return rootView;
}


@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
}

@Override
public void onDetach() {
    super.onDetach();
}


public class FillGrid extends AsyncTask<String, String, String> {
    String z = "";

    List<MenuProdutos> menuProdutosList = new ArrayList<MenuProdutos>();


    @Override
    protected void onPreExecute() {

     //   pbbar.setVisibility(View.VISIBLE);
    }

    @Override
    protected void onPostExecute(String r) {

      //  pbbar.setVisibility(View.GONE);

        Toast.makeText(getActivity(),r, Toast.LENGTH_SHORT).show();

        adapter = new MenuProdutoAdapter(HomeFragment.this, menuProdutosList);

        gridView.setAdapter(adapter);

        gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String pid = menuProdutosList.get(position).getProdutoMenu_ID();

                Toast.makeText(getActivity().getApplicationContext(), "Produtos "
                                + (position + 1) + ": " + menuProdutosList.get(position).getProdutoMenu_nome()
                                + "E o seu PID eh: " + pid,
                        Toast.LENGTH_LONG).show();

// Intent intent = new Intent(getActivity().getApplicationContext(), FriendsActivity.class); // intent.putExtra("pid", pid); // startActivity(intent);

                displayView(position);

                }
        }   );


    }

    @Override
    protected String doInBackground(String... params) {

        try {
            Connection con = connectionClass.CONN();
            if (con == null) {
                z = "Error in connection with SQL server";
            } else {
                String query = "select * from ImagemMenu";
                PreparedStatement ps = con.prepareStatement(query);
                ResultSet rs = ps.executeQuery();


                while (rs.next()) {

                    String Menupro_ID = rs.getString("Id");
                    String Menupro_nome = rs.getString("Nome");
                    String Menupro_image = rs.getString("Imagem");


                    byte[] decodeString = Base64.decode(Menupro_image, Base64.DEFAULT);
                    Bitmap Menupro_bitmap = BitmapFactory.decodeByteArray(decodeString,
                            0, decodeString.length);

                    MenuProdutos p = new MenuProdutos(Menupro_ID, Menupro_nome, Menupro_bitmap);

                    menuProdutosList.add(p);

                }



                z = "Success";
            }
        } catch (Exception ex) {
            z = "Error retrieving data from table";

        }
        return z;
    }
}

【问题讨论】:

标签: android


【解决方案1】:

试试这个

1) 在 gradle 中从 square 导入 Picasso

`编译'com.squareup.picasso:picasso:2.5.2'

2) 获取您的 imageView 并从此处的 url 加载图片

 Picasso.with(context).load("http://your_uri").into(imageView);

希望对你有帮助

http://square.github.io/picasso/

如果您不喜欢 Picasso,可以使用“通用图像加载器”https://github.com/nostra13/Android-Universal-Image-Loader 或 Glide https://github.com/bumptech/glide。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-30
    • 2012-10-06
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    相关资源
    最近更新 更多