android開發(fā)我的新浪微博客戶端-登錄頁(yè)面功能篇(4.2)
上一篇中完成了如上圖的UI部分的實(shí)現(xiàn),現(xiàn)在繼續(xù)來(lái)講功能的實(shí)現(xiàn),用戶登錄操作主要就是賬號(hào)列表顯示和選擇賬號(hào)登錄兩個(gè)功能其他的都是些簡(jiǎn)單的輔助功能,首先是點(diǎn)擊id為iconSelectBtn的ImageButton時(shí)顯示用戶選擇窗口,這個(gè)時(shí)候去數(shù)據(jù)庫(kù)中獲取賬號(hào)記錄然后在選擇窗口中以列表方式顯示出來(lái),通過(guò)上一篇已經(jīng)知道Id為list的ListView控件來(lái)顯示賬號(hào)列表,首先是從數(shù)據(jù)庫(kù)中獲取所有的賬戶記錄然后設(shè)置默認(rèn)選中的用戶賬號(hào)代碼如下:
代碼
private void initUser(){ //獲取賬號(hào)列表 dbHelper=new DataHelper(this); userList = dbHelper.GetUserList(false); if(userList.isEmpty()) { Intent intent = new Intent(); intent.setClass(LoginActivity.this, AuthorizeActivity.class); startActivity(intent); } else { SharedPreferences preferences = getSharedPreferences(Select_Name, Activity.MODE_PRIVATE); String str= preferences.getString("name", ""); UserInfo user=null; if(str!="") { user=GetUserByName(str); } if(user==null) { user=userList.get(0); } icon.setImageDrawable(user.getUserIcon()); iconSelect.setText(user.getUserName()); } } 這個(gè)initUser() 初始賬號(hào)的方法在LoginActivity的onCreate中調(diào)用,主要完成兩件事情,第一件獲取通過(guò)userList = dbHelper.GetUserList(false);獲取所有的賬戶記錄,關(guān)于DataHelper前面已經(jīng)有說(shuō)過(guò)了,如果獲取的用戶記錄為空那么就跳轉(zhuǎn)到用戶授權(quán)功能頁(yè)面讓用戶添加賬號(hào),如果不為空那么通過(guò)SharedPreferences去讀取用戶上一次選擇的賬號(hào)名稱,如果沒(méi)有或者數(shù)據(jù)庫(kù)里賬號(hào)記錄不包括這個(gè)賬戶名稱那么默認(rèn)顯示記錄的第一個(gè)賬號(hào)和頭像,如果有那么顯示這個(gè)賬戶的名稱和頭像。關(guān)于SharedPreferences,是android提供給開發(fā)者用來(lái)存儲(chǔ)一些簡(jiǎn)單的數(shù)據(jù)用的,非常方便類似于網(wǎng)站的Cookie,在這里我就是用這個(gè)來(lái)保存上一次用戶選擇的是哪個(gè)賬號(hào),非常實(shí)用。 接下類首先為Id為list的ListView控件準(zhǔn)備數(shù)據(jù)Adapter,這個(gè)Adapter非常簡(jiǎn)單就是普通的adapter繼承BaseAdapter即可,代碼如下:代碼 public class UserAdapater extends BaseAdapter{ @Override public int getCount() { return userList.size(); } @Override public Object getItem(int position) { return userList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.item_user, null); ImageView iv = (ImageView) convertView.findViewById(R.id.iconImg); TextView tv = (TextView) convertView.findViewById(R.id.showName); UserInfo user = userList.get(position); try { //設(shè)置圖片顯示 iv.setImageDrawable(user.getUserIcon()); //設(shè)置信息 tv.setText(user.getUserName()); } catch (Exception e) { e.printStackTrace(); } return convertView; }
接下就是為這個(gè)ListView設(shè)定數(shù)據(jù)源Adapter,在賬號(hào)選擇窗口顯示的時(shí)候進(jìn)行設(shè)置,添加到id為iconSelectBtn的ImageButton的OnClickListener中代碼如下:代碼 ImageButton iconSelectBtn=(ImageButton)findViewById(R.id.iconSelectBtn); iconSelectBtn.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { ...... dialog.show(); UserAdapater adapater = new UserAdapater(); ListView listview=(ListView)diaView.findViewById(R.id.list); listview.setVerticalScrollBarEnabled(false);// ListView去掉下拉條 listview.setAdapter(adapater); listview.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> arg0, View view,int arg2, long arg3) { TextView tv=(TextView)view.findViewById(R.id.showName); iconSelect.setText(tv.getText()); ImageView iv=(ImageView)view.findViewById(R.id.iconImg); icon.setImageDrawable(iv.getDrawable()); dialog.dismiss(); } }); } }); 通過(guò)上面代碼完成了賬號(hào)選擇的功能,接下來(lái)給id為login的ImageButton添加OnClickListener,使得點(diǎn)擊后以當(dāng)前選擇賬號(hào)進(jìn)入微博首頁(yè),代碼如下:
代碼
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); ...... ImageButton login=(ImageButton)findViewById(R.id.login); login.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { GoHome(); } }); } //進(jìn)入用戶首頁(yè) private void GoHome(){ if(userList!=null) { String name=iconSelect.getText().toString(); UserInfo u=GetUserByName(name); if(u!=null) { ConfigHelper.nowUser=u;//獲取當(dāng)前選擇的用戶并且保存 } } if(ConfigHelper.nowUser!=null) { //進(jìn)入用戶首頁(yè) Intent intent = new Intent(); intent.setClass(LoginActivity.this, HomeActivity.class); startActivity(intent); } }
在上面的GoHome方法中ConfigHelper.nowUser是類型為UserInfo的static類型用來(lái)保存當(dāng)前登錄賬號(hào)的信息,替代web中session使用。 最后添加如下方法,用來(lái)當(dāng)這個(gè)登錄LoginActivity結(jié)束的時(shí)候保存當(dāng)前選擇的賬戶名稱到SharedPreferences中,以便幫用戶記住登錄賬號(hào)的功能,就是前面的initUser() 初始賬號(hào)的方法中會(huì)獲取保存在SharedPreferences中的賬戶名稱,代碼如下:
代碼
@Override protected void onStop() { //獲得SharedPreferences對(duì)象 SharedPreferences MyPreferences = getSharedPreferences(Select_Name, Activity.MODE_PRIVATE); //獲得SharedPreferences.Editor對(duì)象 SharedPreferences.Editor editor = MyPreferences.edit(); //保存組件中的值 editor.putString("name", iconSelect.getText().toString()); editor.commit(); super.onStop(); }
至此登錄頁(yè)面功能篇結(jié)束,請(qǐng)繼續(xù)關(guān)注下一篇。 |
|
來(lái)自: 昵稱QAb6ICvc > 《手機(jī)知識(shí)》