отображение изображения в виде сетки

1

Я хочу отображать изображения с сервера mysql (тестирование в localhost) с помощью imageurl, у меня есть изображения в фидере на моем сервере, в клиентском приложении android как gridview вместе с text.how я использую imageurl в своем коде? mymainmenu.java

public class MainMenu extends Activity {



    GridView gridView;

    static final String[] MOBILE_OS = new String[] { 
        "Android", "iOS","Windows", "Blackberry" };

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.mainmenu_list);


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

        gridView.setAdapter(new ImageAdapter(this, MOBILE_OS));

        gridView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v,
                    int position, long id) {
                Toast.makeText(
                   getApplicationContext(),
                   ((TextView) v.findViewById(R.id.grid_item_label))
                   .getText(), Toast.LENGTH_SHORT).show();

            }
        });

    }

}

my imageadapter.java:

public class ImageAdapter extends BaseAdapter {
private Context context;
private final String[] mobileValues;
    public ImageAdapter(Context context, String[] mobileValues) {
    this.context = context;
    this.mobileValues = mobileValues;
}

public View getView(int position, View convertView, ViewGroup parent) {

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

    View gridView;

    if (convertView == null) {

        gridView = new View(context);

        // get layout from list.xml
        gridView = inflater.inflate(R.layout.list, null);

        // set value into textview
        TextView textView = (TextView) gridView
                .findViewById(R.id.grid_item_label);
        textView.setText(mobileValues[position]);

        // set image based on selected text
        ImageView imageView = (ImageView) gridView
                .findViewById(R.id.grid_item_image);

        String mobile = mobileValues[position];

        if (mobile.equals("Windows")) {
            imageView.setImageResource(R.drawable.imggrid);
        } else if (mobile.equals("iOS")) {
            imageView.setImageResource(R.drawable.imggrid);
        } else if (mobile.equals("Blackberry")) {
            imageView.setImageResource(R.drawable.imggrid);
        } else {
            imageView.setImageResource(R.drawable.imggrid);
        }

    } else {
        gridView = (View) convertView;
    }

    return gridView;
}

@Override
public int getCount() {
    return mobileValues.length;
}

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

@Override
public long getItemId(int position) {
    return 0;
}

}

Я не знаю, как использовать в моем коде следующее:

try {
            URL url = new URL(imageFileURL);
            URLConnection conn = url.openConnection();                   
            HttpURLConnection httpConn = (HttpURLConnection)conn;
            httpConn.setRequestMethod("GET");
            httpConn.connect();               
            if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
             InputStream inputStream = httpConn.getInputStream();                     
             Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
             inputStream.close();
             img.setImageBitmap(bitmap);
            }
           } catch (MalformedURLException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
           } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
           }
  • 0
    спасибо заранее .. кто-то, пожалуйста, помогите
  • 0
    Какой точный пробник? Вы получаете какие-либо ошибки? Если да, то пожалуйста, отправьте logcat.
Показать ещё 2 комментария
Теги:
image
url
gridview

3 ответа

1
Лучший ответ

Поместите код загрузки изображения в AsyncTask. Вот объяснение. Выполните один экземпляр asynctask в методе getView, т.е. Каждый раз извлекать одно изображение.

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
 ImageView mImageView;
 public void setImageView(ImageView img) {
      mImageView = img;
 }

 protected Bitmap doInBackground(String... urls) {
     return loadImageFromNetwork(urls[0]);
 }

 protected void onPostExecute(Bitmap result) {
     mImageView.setImageBitmap(result);
 }

}

Вызовите task.setImageView(yourImageViewinGrid) перед выполнением вашей AsyncTask чтобы он знал, где установить изображение после загрузки.

  • 0
    Смотрите пример кода, который я добавил в свой ответ.
  • 0
    спасибо @ userSeven7s, но в настоящее время у меня есть около 10 изображений, и их количество может увеличиться при обновлении на сервере. Итак, можете ли вы сказать мне, как получить все изображения, помещенные в определенную папку на сервере, могут быть загружены и отображены одновременно в моем клиентском приложении? Мне нужно включить некоторые тексты вместе с каждым изображением в качестве имени элемента. Это, по щелчку должен открыть другое действие. Спасибо еще раз
0

Чтобы получить изображение, вам нужно сделать что-то вроде:

URL new_url = new URL("your url"); 
Bitmap image_bitmap = BitmapFactory.decodeStream(newurl.openConnection() .getInputStream()); ImageView image_view = new ImageView(this);
image_view.setImageBitmap(image_bitmap);

Во всяком случае, лучше загружать изображение в качестве фоновой задачи. Фактически я создаю пользовательский вид с одним закрытым внутренним классом, который расширяет AsyncTask для загрузки изображения для вас.

  • 0
    Спасибо @Warut Surapat..можешь показать мне, как отобразить эти найденные изображения в моем gridview? Пожалуйста, отредактируйте код для меня
0

Я не знаю, как использовать в моем коде следующее:

этот код загрузит изображение для вас, вы можете поместить в отдельный поток либо AsyncTask либо Thread и установить загруженное изображение в виде изображения... просто как это. В Интернете так много примеров, что вы можете

EIDTED

код для загрузки изображения

public class AsyncFetchImage extends AsyncTask<String, Void, Bitmap>{

    private WeakReference<ImageView> imageReference;
//  private WeakReference<Dialog> dialogReferance;

    public AsyncFetchImage(ImageView imageview) {
        imageReference = new WeakReference<ImageView>(imageview);
//      dialogReferance = new WeakReference<Dialog>(dialog);
    }

    @Override
    protected Bitmap doInBackground(String... s) {

        return downloadImage(s[0]);
    }

    private Bitmap downloadImage(String url) {

        final AndroidHttpClient client = AndroidHttpClient.newInstance("Nixit");
        final HttpGet getRequest = new HttpGet(url);
        try {

            HttpResponse response = client.execute(getRequest);
            final int statusCode = response.getStatusLine().getStatusCode();

            if(statusCode != HttpStatus.SC_OK){
                Log.w("ImageDownloader", "Error " + statusCode + " while retrieving bitmap from " + url); 
                return null;
            }
            final HttpEntity entity = response.getEntity();
            if(entity != null){
                InputStream is = null;
                try{
                    is = entity.getContent();
                    final Bitmap bit = BitmapFactory.decodeStream(is);
                    return bit;
                }finally{
                    if(is != null)
                        is.close();
                    entity.consumeContent();
                }
            }


        } catch (IOException e) {
            e.printStackTrace();
            return null;
        } finally{
            if(client != null){
                client.close();
            }
        }
        Log.i("Image Fetch","Image Fetch Complete");
        return null;
    }

    @Override
    protected void onPostExecute(Bitmap result) {
        if(isCancelled()){
            result = null;
        }
        if(imageReference != null){
            ImageView imageView = imageReference.get();
//          Dialog di = dialogReferance.get();
            if (imageView != null) {
                imageView.setImageBitmap(result);
//                di.show();
            }

        }
    }


}

Как использовать:-

imageView = (ImageView)dialog.findViewById(R.id.imageView1);

AsyncFetchImage fetchImage = new AsyncFetchImage(imageView);
fetchImage.execute(url);

Вы можете использовать это в методе getview адаптера

Надеюсь, что помощь

  • 0
    спасибо @Nixit Patel .. я пробовал несколько примеров, но ни один не работает для меня .. можете ли вы показать мне, как включить этот раздел кода URL в мои классы mainmenu и imageadapter? это будет более полезно
  • 0
    @ ess.crazy добавил код в пост
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню