2016-04-04 15 views
0

Bir get bir sınıf Tweet bununla sahip yöntemler Mansiyonlar var Ama ArrayList <> için setText nasıl bilmiyorum. İşte İşte setText istiyorum benim MentionsAdapter benim kodArrayList <> nasıl ayarlanır?

public class Tweet { 

    public String body; 
    private long uid; 
    private String createAt; 
    private User user; 
    private String urlImageNews; 
    private static String url; 
    public ArrayList<User> mentions; 
    public ArrayList<User> getMentions() 
    { 
     return mentions; 
    } 
    public String getUrlImageNews() 
    { 
     return urlImageNews; 
    } 
    public String getBody() { 
     return body; 
    } 

    public long getUid() { 
     return uid; 
    } 

    public String getCreateAt() { 
     return createAt; 
    } 

    public User getUser() { 
     return user; 
    } 
    public String getUrl() 
    { 
     return url; 
    } 

    public String getRelativeTimeAgo() { 
     String twitterFormat = "EEE MMM dd HH:mm:ss ZZZZZ yyyy"; 
     SimpleDateFormat sf = new SimpleDateFormat(twitterFormat, Locale.ENGLISH); 
     sf.setLenient(true); 

     String relativeDate = ""; 
     try { 
      long dateMillis = sf.parse(getCreateAt()).getTime(); 
      relativeDate = DateUtils.getRelativeTimeSpanString(dateMillis, 
        System.currentTimeMillis(), DateUtils.SECOND_IN_MILLIS).toString(); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

     return relativeDate; 
    } 
    public static Tweet fromJSON(JSONObject jsonObject) 
    { 
     Tweet twt = new Tweet(); 
     try { 
      twt.body = jsonObject.getString("text"); 
      twt.uid = jsonObject.getLong("id"); 
      twt.createAt = jsonObject.getString("created_at"); 
      twt.user = User.fromJSON(jsonObject.getJSONObject("user")); 
      twt.mentions = LoadMentions(jsonObject); 
      JSONArray media = jsonObject.getJSONObject("entities").optJSONArray("media"); 
      if (media != null) { 
       for (int i = 0; i < media.length(); i++) { 
        JSONObject a = media.getJSONObject(i); 
        if (a.getString("type").equals("photo")) { 
         twt.urlImageNews = a.getString("media_url_https"); 

        } 

       } 
      } 


     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     return twt; 
    } 
    private static ArrayList<User> LoadMentions(JSONObject object) throws JSONException{ 
     if (!object.getJSONObject("entities").has("user_mentions")) { 
      return null; 
     } 

     ArrayList<User> mentions = new ArrayList<User>(); 
     JSONArray mentionsJSON = object.getJSONObject("entities").getJSONArray("user_mentions"); 
     for (int i = 0; i < mentionsJSON.length(); i++) { 
      User user = User.fromJSON(mentionsJSON.getJSONObject(i)); 
      mentions.add(user); 
     } 
     return mentions; 

    } 
    public static ArrayList<Tweet> fromJSONArray(JSONArray jsonArray) 
    { 
     ArrayList<Tweet> tweets = new ArrayList<>(); 
     for (int i = 0 ; i < jsonArray.length(); i++) 
     { 
      try { 
       JSONObject tweetjson = jsonArray.getJSONObject(i); 
       Tweet tweet = Tweet.fromJSON(tweetjson); 
       if(tweet != null) 
       { 

        tweets.add(tweet); 
       } 

      } catch (JSONException e) { 
       e.printStackTrace(); 
       continue; 
      } 
     } 
     return tweets; 
     } 
} 

olan dizide önceden

public class MentionsAdapter extends RecyclerView.Adapter<MentionsAdapter.ViewHolder> { 
    Context context; 
    View tweetView; 

    private List<Tweet> lTweets; 

    public MentionsAdapter(List<Tweet> tweets) 
    { 
     lTweets = tweets; 
    } 


    public void clear() { 
     lTweets.clear(); 
     notifyDataSetChanged(); 
    } 

    // Add a list of items 
    public void addAll(List<Tweet> list) { 
     lTweets.addAll(list); 
     notifyDataSetChanged(); 
    } 
    public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 
     private ImageView ivProfile; 
     private TextView tvUsername; 
     private TextView tvMentions; 
     private TextView tvMentionsDate; 
     public ViewHolder(View view) { 
      super(view); 
      ivProfile = (ImageView) view.findViewById(R.id.ivAva); 
      tvUsername = (TextView) view.findViewById(R.id.tvName); 
      tvMentions = (TextView) view.findViewById(R.id.tvMentions); 
      tvMentionsDate = (TextView) view.findViewById(R.id.tvMentionsDate); 
      view.setOnClickListener(this); 

     } 

     @Override 
     public void onClick(View v) { 
     } 
    } 
    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     context = parent.getContext(); 
     LayoutInflater inflater = LayoutInflater.from(context); 
     tweetView = inflater.inflate(R.layout.item_metions, parent, false); 
     ViewHolder viewHolder = new ViewHolder(tweetView); 
     return viewHolder; 
    } 
    @Override 
    public void onBindViewHolder(ViewHolder holder, int position) { 
     Log.d("debug", "int:: " + position); 
     Tweet tweet = lTweets.get(position); 
     holder.tvMentionsDate.setText(tweet.getRelativeTimeAgo()); 
     holder.tvUsername.setText(tweet.getUser().getName()); 
     holder.tvMentions.setText(tweet) 
     holder.ivProfile.setImageResource(android.R.color.transparent); 
     Glide.with(context).load(tweet.getUser().getProfileImageUrl()).into(holder.ivProfile); 
    } 

    @Override 
    public int getItemCount() { 
     if(lTweets == null){ 
      Log.d("debug", "null"); 
      return 0; 
     } 
     else { 
      Log.d("debug", ":: " + lTweets.size()); 
      return lTweets.size(); 
     } 
    } 
} 

Teşekkür Konuşması.

+0

için neyse herkese teşekkürler ?? –

+0

Aslında ben bahsettiklerimi ayarlamaya çalışıyorum ama yapamam. Ben twt.mentions = LoadMentions (jsonObject) verileri yazdırmak istiyorum gibi; Ama nasıl yapılacağını bilmiyorum –

cevap

0

Ahh Eh benim cevapla düzeltmek: Bunu yapmanın twt.textMentions = jsonObject.getString ("metin"); cevaplar

Eğer tvMentions ile yapmak istiyorum tam olarak ne
0

alabilirsiniz size sadece

 user.getMethodName() 

kullanarak buradan tüm kullanıcı örneklerini alabilirsiniz that.same şekilde kullanıcı nesnesini alabilirsiniz

 User user = tweet.getMentions(); 

yüzden izleyerek tweet verileri bahseder Yukarıdaki kodu onBindViewHolder() 'da güncelleyin. iu bu

yourArrayList.add(new Tweet ("Parameters goes here"); 

umut gibi yapılabilir Tweet tiptedir kendi ArrayList veri eklemek istediğiniz yanlış değilim seni doğru anladıysam eğer

@Override 
     public void onBindViewHolder(ViewHolder holder, int position) { 
      Log.d("debug", "int:: " + position); 
      Tweet tweet = lTweets.get(position); 
      User user = tweet.getMentions(); 

      holder.tvMentionsDate.setText(tweet.getRelativeTimeAgo()); 
      holder.tvUsername.setText(tweet.getUser().getName()); 
      holder.tvMentions.setText(tweet) 
      holder.ivProfile.setImageResource(android.R.color.transparent); 
      Glide.with(context).load(tweet.getUser().getProfileImageUrl()).into(holder.ivProfile); 
     } 
+0

Evet Yöntemimi Kullanıcı kullanıcı ile güncelliyorum = tweet.getMentions(); ama ekleyemiyorum. holder.tvMentions.setText (kullanım). . –

+0

Eğer bunu düzeltmek gibi holder.tvMentions.setText (user.getMethodName()) İşte methodName() kullanıcı sınıfı Malli görünüyor hızlı bir cevap için .. – malli

+0

Teşekkür tanımlanması gerektiğini çağırabilirsiniz: D –

0

yardımcı olur sadece sözlerin sayısını görüntülemek istiyorum. Sadece bazı satır ekleyerek

holder.tvMentions.setText(Integer.toString(tweet.getMentions().size())); 
+0

Evet ama insanların bana bahsettiği String'i yazdırmak istiyorum. Bunu @ dq1078: Blablabla –

+0

gibi daha sonra gibi ArrayList öğelerini döndürmeniz gerekir String label = ""; için (0 = int i tweet.getMentions <() boyutu (.); i ++). { etiket + = tweet.getMentions() ile (i) .username + "" + tweet.getMentions() olsun. (i) .comment; } – loukaspd

İlgili konular