Bütün günümü ayırmama rağmen çözemediğim bir konu. Baseadapter ile içerikleri bastırıyorum ama resimleri bastıramıyorum bir türlü.

Aşağıdaki adresten json verisini çekiyorum.

http://www.tjod.org/androidWebService/

Geri kalan kodları sizinle paylaşıyorum. Yardımcı olursanız çok sevinirim.

Categories.java

    public class Categories extends Activity {
    private List<Categoryicerikler> content_list;
    private CategoryAdapter categoryAdapter;
    private ListView main_category;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_categories);
        main_category = (ListView) findViewById(R.id.main_category);
        new GetCategory().execute();
    }

    private class GetCategory extends AsyncTask<Void,Void,String> {

        @Override
        protected void onPreExecute() {
            Toast.makeText(Categories.this, "İslem Baslıyor Bekleyiniz", Toast.LENGTH_SHORT).show();
        }

        @Override
        protected String doInBackground(Void... voids) {
            /*
            Burada internete bağlanıp json veriyi string cinsinden çekiyoruz.
             */
            InternetConnection internetcon = new InternetConnection();
            String json_result = internetcon.get_json_data();
            return json_result;
        }

        @Override
        protected void onPostExecute(String data) {
            /*
            Gelen string veriyi json_to_list_view metoduna veriyorum
            Bu metot gelen json verisinin içeriklerini doldurarak bana birt liste dönderir.
             */
            try {
                content_list = GetJson.json_to_list_view(data);
            } catch (JSONException e) {
                Log.d("Json_Error","Json çekilirken hata oluştu");
            }
            categoryAdapter = new CategoryAdapter(content_list,Categories.this);
            main_category.setAdapter(categoryAdapter);

        }
    }
}

Categoryadapter.java

    public class CategoryAdapter extends BaseAdapter {
    private List<Categoryicerikler> list_view;
    private Context mContext;

    public CategoryAdapter(List<Categoryicerikler> list_view, Context mContext) {
        this.list_view = list_view;
        this.mContext = mContext;
    }

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

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

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

    @Override
    public View getView(int position, View convertview, ViewGroup viewGroup) {
        Categoryicerikler categoryicerikler = list_view.get(position);

        if(convertview==null){
            convertview = LayoutInflater.from(mContext).inflate(R.layout.categories,viewGroup,false);
            TextView post_title = (TextView) convertview.findViewById(R.id.category_posttitle);
            TextView post_date  = (TextView) convertview.findViewById(R.id.category_postdate);
            ImageView post_image = (ImageView) convertview.findViewById(R.id.category_image);

            post_title.setText(categoryicerikler.getCategory_posttitle());
            post_date.setText(categoryicerikler.getCategory_postdate());
        }

        return convertview;
    }
}

Categoryicerikler.java

    public class Categoryicerikler {
    private Bitmap category_image;
    private String category_posttitle;
    private String category_postdate;
    private String category_post_content;

    public Categoryicerikler( String category_posttitle, String category_postdate, String category_post_content) {
        this.category_posttitle = category_posttitle;
        this.category_postdate = category_postdate;
        this.category_post_content = category_post_content;
    }

    public Bitmap getCategory_image() {
        return category_image;
    }

    public void setCategory_image(Bitmap category_image) {
        this.category_image = category_image;
    }

    public String getCategory_posttitle() {
        return category_posttitle;
    }

    public void setCategory_posttitle(String category_posttitle) {
        this.category_posttitle = category_posttitle;
    }

    public String getCategory_postdate() {
        return category_postdate;
    }

    public void setCategory_postdate(String category_postdate) {
        this.category_postdate = category_postdate;
    }

    public String getCategory_post_content() {
        return category_post_content;
    }

    public void setCategory_post_content(String category_post_content) {
        this.category_post_content = category_post_content;
    }
}

Internetconnection.java

public class InternetConnection {
    public static final String URL_ADDRESS = "http://www.tjod.org/androidWebService/";
    HttpURLConnection urlConnection = null;
    InputStream is = null;

    public String get_json_data(){
        try {
            URL url = new URL(URL_ADDRESS);
            urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setRequestMethod("GET");
            urlConnection.setDoInput(true);
            urlConnection.setDoOutput(true);
            urlConnection.connect();

            // Let's read the response
            int sonuc_kodu = urlConnection.getResponseCode();
            if(sonuc_kodu == HttpURLConnection.HTTP_OK){
                StringBuffer buffer = new StringBuffer();
                is = urlConnection.getInputStream();
                BufferedReader br = new BufferedReader(new InputStreamReader(is));
                String line = null;
                while (  (line = br.readLine()) != null )
                    buffer.append(line + "\\r\\n");

                is.close();
                urlConnection.disconnect();
                return buffer.toString();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        finally {
            try { is.close(); } catch(Throwable t) {}
            try { urlConnection.disconnect(); } catch(Throwable t) {}
        }
        return  null;
    }

    public Bitmap getImage(String pImageUrl){
        HttpURLConnection con=null;
        InputStream is= null;

        try {
            con=(HttpURLConnection) new URL(pImageUrl).openConnection();
            con.setRequestMethod("GET");
            con.setDoInput(true);
            con.setDoOutput(true);

            is=con.getInputStream();
            byte[] buffer=new byte[1024];
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            while(is.read(buffer)!=-1){
                baos.write(buffer);
            }

            byte[] byteTowhat  = baos.toByteArray();
            Bitmap bitmap = BitmapFactory.decodeByteArray(byteTowhat, 0, byteTowhat.length);
            return bitmap;

        } catch (IOException e) {
            e.printStackTrace();
        }
        finally {
            try {
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

            con.disconnect();
        }
        return null;
    }
}

GetJson.java

public class GetJson {
    /*
    Gelen Json verisinin içindekileri listeye doldurup geri göndereceğiz.
     */
    private static List<Categoryicerikler> content_list;

    public static List<Categoryicerikler> json_to_list_view(String data) throws JSONException {
        content_list = new ArrayList<Categoryicerikler>();
        /*
        Gelen String veriyi çekiyoruz ve dizilere girmeye başlıyoruz.
         */
        JSONObject jObj = new JSONObject(data);
        JSONArray posts = jObj.getJSONArray("posts");

        for (int i = 0; i < 15; i++) {
            JSONObject title = posts.getJSONObject(i);
            JSONObject date = posts.getJSONObject(i);
            JSONObject excerpt = posts.getJSONObject(i);
            JSONObject thumbnail = posts.getJSONObject(i);

            content_list.add(new Categoryicerikler(
                    title.getString("title"),
                    date.getString("post_date"),
                    excerpt.getString("excerpt")));
        }

        return content_list;
    }

    public static String json_to_string(String data) throws JSONException {
        JSONObject jObj = new JSONObject(data);

        JSONArray posts = jObj.getJSONArray("posts");
        JSONObject content  = posts.getJSONObject(1);
        JSONObject title = posts.getJSONObject(1);
        String html_icerik = "<h2>" + title.getString("title") + "</h2>";
        html_icerik+= content.getString("content");
        return  html_icerik;
    }
}

categories.xml

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal" android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#ebebeb"
        android:gravity="left"
        android:paddingTop="15px"
        android:paddingBottom="15px">

        <ImageView
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:id="@+id/category_image"
            android:layout_gravity="left|top" />

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp">

            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="Başlık"
                android:id="@+id/category_posttitle" />

            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceSmall"
                android:text="tarih"
                android:id="@+id/category_postdate" />

        </LinearLayout>
    </LinearLayout>

</RelativeLayout>

Emulato goruntusu alt text

soruldu: 27 Eyl '13, 09:16

olkunmustafa's gravatar image

olkunmustafa
582222934
cevap kabul oranı: 26%

değiştirildi: 27 Eyl '13, 09:19


Selamlar,

kod üzerinde zaten resmi ilgili yere basmayla alakalı herhangi bir kod bloğu göremedim ancak daha önceden internetten resim asıl indirirlir diye bir soru sorulmuştu, benim de yazdığım bir cevap var oraya bakabilirsin.

http://www.btsoru.com/questions/10036/android-ile-internetten-nasl-resim-cekilir
permanent link

cevaplandı: 28 Eyl '13, 02:51

lastarabos's gravatar image

lastarabos
1.8k122742
cevap kabul oranı: 29%

Merhabalar.

Evet en büyük sorunum da hangi aktivite de resmi bastıracağımı anlayamamış olmam. Şimdi soruyu biraz ayrıntılayayım isterseniz.

Benimde anlayamadığım resmi hangi aktivite de nasıl bastıracağımı anlayamamış olmam. Internconnection sınıfında gelen url'i bitmap olarak geri döndüren bir public Bitmap getImage(String pImageUrl) şeklinde bir fonksiyonum var.

Şimdi bundan sonra ki kısımda Categoryadapter sınıfında textleri bastırdığım aşağıdaki alanda yapmayı deniyorum mesela.

public View getView(int position, View convertview, ViewGroup viewGroup) {
    Categoryicerikler categoryicerikler = list_view.get(position);

    if(convertview==null){
        Log.v(LOG_NAME,"Deneme");
        convertview = LayoutInflater.from(mContext).inflate(R.layout.categories,viewGroup,false);
    }
    TextView post_title = (TextView) convertview.findViewById(R.id.category_posttitle);
    TextView post_date  = (TextView) convertview.findViewById(R.id.category_postdate);
    ImageView post_image  = (ImageView) convertview.findViewById(R.id.category_image);

    post_title.setText(categoryicerikler.getCategory_posttitle());
    post_date.setText(categoryicerikler.getCategory_postdate());
    new DownloadImage().execute(categoryicerikler.getCategory_post_image());

    return convertview;
}

private class DownloadImage extends AsyncTask<String,Void,Bitmap> {

    InternetConnection connection = new InternetConnection();

    @Override
    protected Bitmap doInBackground(String... strings) {
     return connection.getImage(strings[0]);
    }

    @Override
    protected void onPostExecute(Bitmap bitmap) {
        ??????????????????
    }
}

İşte soru işaretli yerde tıkanıp kalıyorum. base adapter de sınıfı bastırmadan önce resimleri Bitmap olarak çekiyorum ama ImageView'e bastıramıyorum. Valla 30 saattir uğraşıyorum. İnternette sadece resim çektiğim zaman sıkıntı yok ikinci işlemde sıkıntı oluyor.

Teşekkürler iyi çalışmalar.

permanent link

cevaplandı: 28 Eyl '13, 07:26

olkunmustafa's gravatar image

olkunmustafa
582222934
cevap kabul oranı: 26%

1

Tekrardan bir asynctask tanımlamayın

http://www.btsoru.com/questions/10036/android-ile-internetten-nasl-resim-cekilir#10070

linkteki fonksiyonu kullanın... Fonksiyon zaten image url ve imageview parametreleri alıyor daha rahat yapabilirsiniz.

(28 Eyl '13, 07:34) lastarabos lastarabos's gravatar image

Hemen deniyorum. Asyntask işlem sonlanana kadar devam ediyor diye biliyorum bu da mı aynı şekilde. Yani aktiviteden çıksak dahi işlem devam eden cinsinde mi çalışıyor. Deneyip sonucu size bildireceğim.

(28 Eyl '13, 07:36) olkunmustafa olkunmustafa's gravatar image

Öncelikle çok teşekkür ederim. Resimler çektim :) Bu uygulamada çok yardımcı oldunuz isminizi bi yere yazmak istiyorum :D

(28 Eyl '13, 07:53) olkunmustafa olkunmustafa's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×818
×2

Soruldu: 27 Eyl '13, 09:16

Görüntüleme: 737 kez

Son güncelleme: 28 Eyl '13, 07:53

powered by BitNami OSQA