Soru & Cevap

Xml'den çektiğim veriyi başka activity'ye gönderme problemim

11.06.2014 - 09:43

Merhabalar. ..

Xml içinden çektiğim url yi, string olarak WV isimli başka bir class'a bir buton ile göndermek istiyorum... şu kod ile denedim ama olnadı.

[code]

Intent i = new Intent(getApplicationContext(), VW.class); i.putExtra("link",(KEY_URL).toString());

startActivity(i);[/code]

KEY_URL değeri ile mi göndermem gereliyor yoksa başka bir şekilde mi?

Tam kodum ise bu

[code]

public class haftalik extends ListActivity { static final String URL = "https://dl.dropboxusercontent.com/s/qd33n0zxcmrnsf2/haftalik.xml"; static final String KEY_ITEM = "item"; static final String KEY_ID = "id"; static final String KEY_BILGI = "bilgi"; static final String KEY_URL = "url"; static final String KEY_THUMB_URL = "thumb_url"; public WebView tarayici; private ProgressDialog pDialog; ConnectivityManager connectivity = null; ListView lv; haftalik2 adapter; ArrayList<HashMap<String, String>> catalogList; Button button; //@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.haftalik_main); if(isConn()) { catalogList= new ArrayList<HashMap<String, String>>(); new LoadCatalog().execute(); } else { Intent i = new Intent(getApplicationContext(), dene.class); startActivity(i); this.finish(); } } class LoadCatalog extends AsyncTask<String, String, String> { @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(haftalik.this); // pDialog.setMessage(""); pDialog.setIndeterminate(false); pDialog.setCancelable(false); pDialog.show(); } protected String doInBackground(String... args) { XMLParser parser = new XMLParser(); String xml = parser.getXmlFromUrl(URL); // getting XML from URL Document doc = parser.getDomElement(xml); // getting DOM element NodeList nl = doc.getElementsByTagName(KEY_ITEM); // looping through all song nodes &lt;song&gt; for (int i = 0; i < nl.getLength(); i++) { // creating new HashMap HashMap<String, String> map = new HashMap<String, String>(); Element e = (Element) nl.item(i); // adding each child node to HashMap key =&gt; value map.put(KEY_ID, parser.getValue(e, KEY_ID)); map.put(KEY_BILGI, parser.getValue(e, KEY_BILGI)); map.put(KEY_URL, parser.getValue(e, KEY_URL)); map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL)); // adding HashList to ArrayList catalogList.add(map); } return null; } protected void onPostExecute(String file_url) { // dismiss the dialog after getting all products // updating UI from Background Thread runOnUiThread(new Runnable() { public void run() { lv=getListView(); adapter=new haftalik2(haftalik.this, catalogList); lv.setAdapter(adapter); pDialog.dismiss(); } }); button = (Button) findViewById(R.id.haftalikizle); button.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { Intent i = new Intent(getApplicationContext(), VW.class); i.putExtra("link",(KEY_URL).toString()); startActivity(i); }}); } } public boolean isConn(){ connectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); if(connectivity.getActiveNetworkInfo()!=null){ if(connectivity.getActiveNetworkInfo().isConnected()) return true; } return false; } }[/code]

 

25 Görüntülenme

4 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-1372-1408467635.jpg
ahmtbrk
11.06.2014 - 08:10

Şöyle yapabilirsin.Pojo(plain old java object) class yazacaksın bi tane çok basit eclipse ile 15 saniyede oluşturursun.

[code]

public class DropBoxObject {
    private String resimUrl,videoUrl,bilgi;

    public DropBoxObject(String resimUrl, String videoUrl, String bilgi) {
        super();
        this.resimUrl = resimUrl;
        this.videoUrl = videoUrl;
        this.bilgi = bilgi;
    }

    public String getResimUrl() {
        return resimUrl;
    }

    public String getVideoUrl() {
        return videoUrl;
    }

    public String getBilgi() {
        return bilgi;
    }

    public void setResimUrl(String resimUrl) {
        this.resimUrl = resimUrl;
    }

    public void setVideoUrl(String videoUrl) {
        this.videoUrl = videoUrl;
    }

    public void setBilgi(String bilgi) {
        this.bilgi = bilgi;
    }
    
    

}

[/code]

Şimdi bi ArrayList tutacaksın bunun türünden.

[code]ArrayList<DropBoxObject> dropBoxList;[/code]

bir tane baseAdapter yazıp constructorunda bunu parametre olarak vereceksin.sana diyelim içeride ne lazım.bilgi ve resim.onları getView içerisinde

[code]

dropBoxList.get(position).getBilgi();

dropBoxList.get(position).getResimUrl();

[/code]

şeklinde alabilirsin.daha sonra getView içinde değerleri set ettikten sonra o return ettiğin yerin üstünde aynı viewe setOnClickListener ekleyeceksin ve intent'inide orada yapacaksın.İntentinede putExtra ile video url sini bahsettiğim şekilde

dropBoxList.get(position).getVideoUrl(); şeklinde göndereceksin.Çokta düzenli ve basit olur dediğimi uygula dökümanlarda custom listview yapımı vs hep yazıyor zaten.

Profile picture for user AKI
AKI
11.06.2014 - 06:26

Şöyle özetleye bilirim;

dropbox'da ki XML dosyamda 3 item var, biri Poster(Resim), biri bilgi, biri de video linki.

XML dosyamı parsing ettikten sonra, KEY_BILGI döngüsü ile KEY_THUMB_URL döngüsü haftalik2 isminde ki class a aktarılıyor. bu class bildiğimiz adapter görevini yapıyor. Bu iki döngü bu şekilde yerini buluyor.

[code] TextView bilgi = (TextView)vi.findViewById(R.id.bilgi);
        ImageView thumb_image=(ImageView)vi.findViewById(R.id.poster);[/code]

KEY_URL Döngüsünü ise haftalik2 class'ına değil de, video oynatıcısının class'ına göndermeye çalışıyorum.

Kullandıgım kod aslında listview ama şimdilik tek bir gösterim yapacağım için buton ile kullanmak istedim ama bir sıkıntı var çözemiyorum.

 

Tam kodlarım bunlar.

[code]

public class haftalik extends ListActivity {

    static final String URL = "https://dl.dropboxusercontent.com/s/qd33n0zxcmrnsf2/haftalik.xml";
// XML node keys
static final String KEY_ITEM = "item";
static final String KEY_ID = "id";
static final String KEY_BILGI = "bilgi";
static final String KEY_URL = "url";
static final String KEY_THUMB_URL = "thumb_url";


private ProgressDialog pDialog;
ConnectivityManager connectivity = null;
ListView lv;
haftalik2 adapter;
ArrayList<HashMap<String, String>> catalogList;
Button button;

//@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.haftalik_main);

    catalogList= new ArrayList<HashMap<String, String>>();
    
    new LoadCatalog().execute();

}
class LoadCatalog extends AsyncTask<String, String, String>   {

        @Override
         protected void onPreExecute() {
             super.onPreExecute();
                pDialog = new ProgressDialog(haftalik.this);
//                pDialog.setMessage("");
                pDialog.setIndeterminate(false);
                pDialog.setCancelable(false);
                pDialog.show();
         }

         protected String doInBackground(String... args) {
             XMLParser parser = new XMLParser();
             String xml = parser.getXmlFromUrl(URL); // getting XML from URL
                Document doc = parser.getDomElement(xml); // getting DOM element
                NodeList nl = doc.getElementsByTagName(KEY_ITEM);
                // looping through all song nodes &lt;song&gt;
                for (int i = 0; i < nl.getLength(); i++) {
                    // creating new HashMap
                    HashMap<String, String> map = new HashMap<String, String>();
                    Element e = (Element) nl.item(i);
                    // adding each child node to HashMap key =&gt; value

                    map.put(KEY_ID, parser.getValue(e, KEY_ID));
                    map.put(KEY_BILGI, parser.getValue(e, KEY_BILGI));
                    map.put(KEY_URL, parser.getValue(e, KEY_URL));
                    map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL));

                    // adding HashList to ArrayList
                    
                    catalogList.add(map);
                    
                }
                return null;
         }

         protected void onPostExecute(String file_url) {
             // dismiss the dialog after getting all products
                // updating UI from Background Thread
             runOnUiThread(new Runnable() {
                    public void run() {

                        lv=getListView();
                         adapter=new haftalik2(haftalik.this, catalogList);
                         lv.setAdapter(adapter);
                         pDialog.dismiss();
                    }
                    
                });
            
             button = (Button) findViewById(R.id.haftalikizle);
             button.setOnClickListener(new OnClickListener() {
                 public void onClick(View arg0) {

                      Intent i = new Intent(haftalik.this, VW.class);
                       i.putExtra("link",KEY_URL);
                      startActivity(i);
                  }});  
         }
}
}

[/code]

 

haftalik2

 

[code]

class haftalik2 extends BaseAdapter {
    
    Button button;
    String url;
    private Activity activity;
    private ArrayList<HashMap<String, String>> data;
    private static LayoutInflater inflater=null;
    public ImageLoader imageLoader;
    
    public haftalik2(Activity a, ArrayList<HashMap<String, String>> d) {
        activity = a;
        data=d;
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        imageLoader=new ImageLoader(activity.getApplicationContext());
    }

    public int getCount() {
        return data.size();
    }

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

    public long getItemId(int position) {
        return position;
    }
    
    public View getView(int position, View convertView, ViewGroup parent) {
        View vi=convertView;
        if(convertView==null)
        vi = inflater.inflate(R.layout.haftalik, null);

        TextView bilgi = (TextView)vi.findViewById(R.id.bilgi);
      //  TextView url = (TextView)vi.findViewById(R.id.url);
        ImageView thumb_image=(ImageView)vi.findViewById(R.id.poster);
        
        HashMap<String, String> song = new HashMap<String, String>();
        song = data.get(position);
        
       
        bilgi.setText(song.get(haftalik.KEY_BILGI));
       // url.setText(song.get(haftalik.KEY_URL));
        imageLoader.DisplayImage(song.get(haftalik.KEY_THUMB_URL), thumb_image);
        
        return vi;
        
    }
}

 

[/code]

 

 

Video oynatıcısından intent'i alma kodum

[code]String VideoURL = getIntent().getExtras().getString("link");[/code]

 

 

 

 

 

 

 

 

Profile picture for user AKI
AKI
11.06.2014 - 11:53

Yanıtınız için teşekkürler, Ahmet bey.

 

Yanlız kullandığım full koda bakarsanız [code]final String KEY_URL = "url";[/code] kodunda ki veriyi diğer class a aktarmak istiyorum.

Bu şekilde yapıyorum, putExtra ya KEY_URL olarak giriş yapıyorum ama sanırım KEY_URL değil de sanki bir başka şekilde veriyi almam gerekiyor gibi. burada takıldım kaldım.

[code]Intent i = new Intent(haftalik.this, VW.class);
                      i.putExtra("link",KEY_URL);
                      startActivity(i);[/code]

 

Full kodum ise böyle,

[code]

public class haftalik extends ListActivity {

    static final String URL = "https://dl.dropboxusercontent.com/s/qd33n0zxcmrnsf2/haftalik.xml";
// XML node keys
static final String KEY_ITEM = "item";
static final String KEY_ID = "id";
static final String KEY_BILGI = "bilgi";
static final String KEY_URL = "url";
static final String KEY_THUMB_URL = "thumb_url";

public WebView tarayici;
private ProgressDialog pDialog;
ConnectivityManager connectivity = null;
ListView lv;
haftalik2 adapter;
ArrayList<HashMap<String, String>> catalogList;
Button button;
String KEY_URL2=null;

//@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.haftalik_main);

    if(isConn())
    {

    catalogList= new ArrayList<HashMap<String, String>>();

    new LoadCatalog().execute();
    }

    else
    {
        Intent i = new Intent(getApplicationContext(), dene.class);
        startActivity(i);
        this.finish();
}
}

class LoadCatalog extends AsyncTask<String, String, String>   {

        @Override
         protected void onPreExecute() {
             super.onPreExecute();
                pDialog = new ProgressDialog(haftalik.this);
//                pDialog.setMessage("");
                pDialog.setIndeterminate(false);
                pDialog.setCancelable(false);
                pDialog.show();
         }

         protected String doInBackground(String... args) {
             XMLParser parser = new XMLParser();
             String xml = parser.getXmlFromUrl(URL); // getting XML from URL
                Document doc = parser.getDomElement(xml); // getting DOM element
                NodeList nl = doc.getElementsByTagName(KEY_ITEM);
                // looping through all song nodes &lt;song&gt;
                for (int i = 0; i < nl.getLength(); i++) {
                    // creating new HashMap
                    HashMap<String, String> map = new HashMap<String, String>();
                    Element e = (Element) nl.item(i);
                    // adding each child node to HashMap key =&gt; value

                    map.put(KEY_ID, parser.getValue(e, KEY_ID));
                    map.put(KEY_BILGI, parser.getValue(e, KEY_BILGI));
                    map.put(KEY_URL, parser.getValue(e, KEY_URL));
                    map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL));

                    // adding HashList to ArrayList
                    
                    catalogList.add(map);
                    
                }
                return null;
         }

         protected void onPostExecute(String file_url) {
             // dismiss the dialog after getting all products
                // updating UI from Background Thread
             runOnUiThread(new Runnable() {
                    public void run() {

                        lv=getListView();
                         adapter=new haftalik2(haftalik.this, catalogList);
                         lv.setAdapter(adapter);
                         pDialog.dismiss();
                    }
                    
                });

             button = (Button) findViewById(R.id.haftalikizle);
             button.setOnClickListener(new OnClickListener() {
                 public void onClick(View arg0) {

                      Intent i = new Intent(haftalik.this, VW.class);
                      i.putExtra("link",KEY_URL);
                      startActivity(i);
                  }});  
         }
}
    public boolean isConn(){
        connectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        if(connectivity.getActiveNetworkInfo()!=null){
            if(connectivity.getActiveNetworkInfo().isConnected())
                return true;
        }
        return false;
    }
 }

[/code]

 

Ahmet Burak Demirkoparan
11.06.2014 - 12:13
koddaki amacınızıı tam anlayamadım ama şunu söyleyeyim. Intent i = new Intent(haftalik.this, VW.class); i.putExtra("link",KEY_URL); startActivity(i); bu kısım doğru. gönderiminiz doğru yani. VW isimli class'a gidip onCreate blogunda şunu yapmanız lazım. String gelenDeger = getIntent().getExtras().getString("link"); yaptığın an yönlendirme başarılı ise bu değer o sayfaya gelir. ama kodunuz çok karışık tam amacınız ney açarsanız kodu biraz daha kaliteli ve okunabilir hale getirebiliriz
picture-1372-1408467635.jpg
ahmtbrk
11.06.2014 - 10:06

Göndereceği sayfada şunu yapacaksın

[code]

Intent intent = new Intent(this, Page.class);

intent.putExtra("arg", getText());

[/code]

diğer classtada şöyle alacaksın.

[code]

String passedArg = getIntent().getExtras().getString("arg");

[/code]