2016-11-22 85 views
-1

即時通訊創建一個應用程序,以瞭解用戶是否登錄或在線。所以首先我有一個列表視圖,即註冊人員。這是我的示例代碼如何知道用戶是否在線/使用解析登錄?

query.findInBackground(new FindCallback<ParseUser>() { 
    @Override 
    public void done(List<ParseUser> objects, ParseException e) { 
     if (e == null) { 
      if (objects.size() > 0) { 
       for (ParseUser user : objects) { 
        usernames.add(user.getUsername()); 
       } 
       userListView.setAdapter(adapter); 
       // i want to add here like if(usernames.isOnline()) 
       // then the image adapter of list view will change to green 
       // instead of transparent 
      } 
     } else { 
      e.printStackTrace(); 
     } 
    } 
}); 

非常感謝。我想擁有一個在線/離線用戶列表。我會很感激你會告訴我的每一個教程。

+0

可能並不存在建立在..你可以做的是有最後一個行動的時間戳,如果其<1分鐘的用戶在線..我不認爲你可以做任何事情比這更好.. –

回答

0

我用的onResume()和的onDestroy

private void updateUserStatus(boolean online) { 
    user.put("online", online); 
    user.saveEventually(); 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    updateUserStatus(false); 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    loadUserList(); 
} 

public void loadUserList() { 
    ParseUser.getQuery().whereNotEqualTo("username", user.getUsername()) 
      .findInBackground(new FindCallback<ParseUser>() { 
       @Override 
       public void done(List<ParseUser> li, ParseException e) { 
        if (li != null) { 
         if (li.size() == 0) { 
          Toast.makeText(getApplicationContext(), 
            "No users found.", Toast.LENGTH_LONG) 
            .show(); 

          uList = new ArrayList<ParseUser>(li); 
          ListView list = (ListView) findViewById(R.id.userListView); 
          list.setAdapter(new UserAdapter()); 
         } 
        } 
       } 
      }); 

} 

,並且按適配器類得到了我的解決方案,圖像將掀起和如果用戶是否在線。謝謝。

0

你可以嘗試

ParseUser.getCurrentUser() 

,而不是查詢。

+0

我認爲他正試圖查看他所有用戶的列表。並希望有一個連接/未連接的狀態。 – litelite

+0

你是正確的litelite。謝謝你解釋我想要的。 –

+0

在適配器的項目onBind方法上,將用戶與'ParseUser.getCurrentUser()'進行比較,並根據需要調整背景。 –

相關問題