[]

Android Like Button / id bulma sorunu / RecyclerView ve Mysql-php

Merhaba ben twitter klonu yapmaya çalışıyorum.
LOgin REgister Bitti.
twit atıp RecyclerView içerisinde görüntüleyebiliyorum.

Şİmdi card view içindeki twit lerin altına button yerleştirdim.

Bu yerleştirdiğim like butonunu dinamik olarak çalıştırmak istiyorum.

butona basıldığında sayılar artacak ve bu sayılar atılan tiwitin mysql tablosuna güncellenerek yazılacak.

Bunun için benim atılan twittin mysql tablosundaki id bulmam gerekiyor.

Son girilen veriyi bulmak istemiyorum.

BEn her twititn altında bulunan basıldığında sayıları artan like butonunun sayı bilgisini o tiwitin tablosuna koymam gerekiyor fakat id bulamıyorum.

Nasıl arayacağımı da bilmiyorum.
Biliyorum biraz karışık anlattım fakat konu karışık o yüzden.
YArdım ederseniz sevinirim.
Teşekkürler.

 
Aradigin şey position. Tıklama event'i position diye bir parametre alır. Recycler için bir item list olusturmussundur. Event metodu içinde örneğin list.get(position).getId dersen tıkladığın tweet için Id değerini verir.

Item list oluşturman gerektiğini daha önceki duyurunda söylemiştim.
  • kaptan maydanoz  (09.10.19 17:06:21) 
Efendim ben dediğiniz gibi yaparak (holder.getAdapterPosition())
id elde ediyorum fakat bu id android tarafından benim twittime verilen id.

Yani (holder.getAdapterPosition()) id ile veritabanındaki id aynı olması gerekiyor fakat aynı değil.

Belki tüm veritabanını silersek aynı anda başladığı için aynı id verilebilmiş olur ama bu yöntemle mi çalışılmalı bilemedim.

Çünkü benim amacım twittin altıdaki like butonuna tıklandığında artan sayıları veritabanına gönderip sonrada orodan çekmek.

Göndermek yeride webservis tarafında güncelleme yapıyorum çünkü like sayıları artabilir.
  • aristotelesin berberi  (09.10.19 17:28:55) 
ben olsam şöle yapardım;

veritabanında tweetler tablosunda bir girdi düşünelim

id | kullanıcıadi | text | tarih | begenisayisi | begenenler |
2 | aristo | berberlik güzel | 2019-10-9 18:25:03 | 3 | "raydi""kaptan""aristo" |

gibi bir tablo kullanırdım, tweetler yüklenirken adapter içinde:
"sql sorgusu ile tweetler çekilirken listeye koyarken, yeni bir hashmap oluşturabiliriz sanki işte misal
liste başında; Map<String, String> tweed_id_listesi= new HashMap<String, String>();

adapter içinde; tweed_id_listesi.put("liste id" ,"veritabanı id" );
adapter içinde; tweed_id_listesi.put(holder.getAdapterPosition(), db.veritabani_id);

işte kısaca eşleştiriyoz,sonrası:

beğeni tuşuna basında fonksiyon şu: php/servere istek yollarım parametre ile.

tweet_id = tweed_id_listesi.get(holder.getAdapterPosition()) //veritabanındaki id gelecek

servere istek şöyle olur misal:
blabla,com/begen.php?tweetid=" + tweet_id + "&kullanici_adi=" + kul_adi;
istek yolladıktan sonra, cevap geliyor işte succes diye, sonra tweetleri yeniden yükleriz sayı güncellenir

begen.php içinde de tweet id'sinden tweeti bulup, tabloda sayıyı artırıp, "begenenler" sütununa ekleme yaparız işte "kul_adi" şeklinde.



tweetler yüklenirken daha önce beğendimi sorgusu için ise twetler yükleirken begenenler kısmında '"kul_adi"' böyle bir şey geçiyor mu,geçiyorsa daha önce beğenmiş, tuşu kırmızı yaparsın vs

çok mu uzun oldu :/
  • masseter  (09.10.19 18:00:30 ~ 18:03:36) 
@aristo daha önce de belirttiğim gibi bir item sınıfı oluşturman gerekli. Cidden gerekli :) yoksa projenin sağlıklı bir şekilde yürüyeceğini düşünmüyorum.

Item sınıfı içinde id leri set edeceksin sonra oradan cekeceksin id'yi.
  • kaptan maydanoz  (09.10.19 18:40:15) 
@masseter , @kaptan maydanoz
Efendim teşekkür ediyorum.
Şimdi mola verdim yarın çalışmaya devam edeceğim.
Sabah dediklerinizi deneyeceğim.
Teşekkür ediyorum.
İyi akşamlar.
  • aristotelesin berberi  (09.10.19 18:47:47) 
@masseter , @kaptan maydanoz

Tekrar merhaba biraz ilerleme kaydettim, en azından şuan istediğim şeye nasıl ulaşacağımı biliyorum fakat uygulayamıyorum.

Efendim şimdi ben twitter clonu yapmak istiyorum.

Atılan twitten altına like butonu koymak ve dinamik olarak çalıştırmak istiyorum.

Fakat sorun like butonunun hangi twit id sahip olduğunu bilmiyordum.

Bu sorunu şöyle çözdüm.

Atılan tiwit veri tabanına kayıt oluyor sonra çekilerek android tarafında pars ediliyor.

Ben twit verisi çekerken id çekmiyordum.

Şimdi çekebiliyorum.

Fakat şimdide çektiğim id twitin altına yazamıyorum.

Atılan tiwit ile id ayrı card view ler halinde görünüyor.

Aynı card view içinde id ve twit olması için iki tane array list olması gerekiyor fakat onda da hata alıyorum.

public void tumKelimeler(){

String url = "goldgym.pro";

StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {

kelimelerListe = new ArrayList<>();


try {
JSONObject jsonObj = new JSONObject(response);


JSONArray kelimeler = jsonObj.getJSONArray("employees");

// looping through All Contacts
for (int i = 0; i < kelimeler.length(); i++) {
JSONObject k = kelimeler.getJSONObject(i);


String turkce = k.getString("akis");
String id = k.getString("id");




Kelimeler kelime = new Kelimeler(turkce);
Kelimeler kelimes = new Kelimeler(id);




kelimelerListe.add(kelime); // Çekilen Twit
kelimelerListe.add(kelimes); // Çekilen Twit id si

}

adapter = new KelimelerAdapter(MainActivity.this,kelimelerListe);




rv.setAdapter(adapter);
  • aristotelesin berberi  (10.10.19 14:28:47) 
Kelimeler kelime = new Kelimeler(turkce);
Kelimeler kelimes = new Kelimeler(id);

Bahsettiğim item sınıfı bu işte. Ama 1 tane olması gerekiyor sadece. O yüzden çekemiyorsun. Kodların bir yerde duruyor mu github filan? Ordan baksak daha iyi.
  • kaptan maydanoz  (10.10.19 16:08:02) 
Merhaba @kaptan maydanoz ubuntu da github deskop çalışmıyor o yüzden dual bot iLE iki işletim sistemini kullanıyorum.Şimdi windowsa geçip githup push ettim. Oyuzden bukadar uzun sürdü.

Login register kısmı başka projede yaptım onu sonrada dahil edeceğim.

Aşağıdaki linke tıklayarak çalıştığım MainActivity ulaşabilirsin.

github.com



login register kısmı olan proje

github.com



Dediğin gibi iki tane item sınıfı olmuyor hata veriyor.
  • aristotelesin berberi  (10.10.19 17:37:12) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.