一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

android開發(fā)我的新浪微博客戶端-登錄頁(yè)面功能篇(4.2)

 昵稱QAb6ICvc 2018-07-17

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)代碼如下:

復(fù)制代碼
代碼
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());
        }
    }
復(fù)制代碼

       這個(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即可,代碼如下:代碼

復(fù)制代碼
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;
        }
復(fù)制代碼

 

接下就是為這個(gè)ListView設(shè)定數(shù)據(jù)源Adapter,在賬號(hào)選擇窗口顯示的時(shí)候進(jìn)行設(shè)置,添加到id為iconSelectBtn的ImageButton的OnClickListener中代碼如下:代碼

復(fù)制代碼
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();
                    }
                    
                });
            }
            
        });
復(fù)制代碼

通過(guò)上面代碼完成了賬號(hào)選擇的功能,接下來(lái)給id為login的ImageButton添加OnClickListener,使得點(diǎn)擊后以當(dāng)前選擇賬號(hào)進(jìn)入微博首頁(yè),代碼如下:

復(fù)制代碼
代碼
@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);
        }
    }
復(fù)制代碼

 

在上面的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中的賬戶名稱,代碼如下:

復(fù)制代碼
代碼
@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();
    }
復(fù)制代碼

 

至此登錄頁(yè)面功能篇結(jié)束,請(qǐng)繼續(xù)關(guān)注下一篇。 

分類: Android
標(biāo)簽: android, 2.2, 新浪微博

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    免费午夜福利不卡片在线 视频 | 五月情婷婷综合激情综合狠狠 | 亚洲综合一区二区三区在线| 国产精品午夜一区二区三区| 欧美日韩亚洲国产精品| 亚洲少妇一区二区三区懂色| 亚洲一区二区三区在线中文字幕| 青青操视频在线播放免费| 不卡中文字幕在线视频| 亚洲三级视频在线观看免费| 免费福利午夜在线观看| 亚洲国产成人久久99精品| 中文字幕一区二区久久综合| 高清一区二区三区不卡免费| 亚洲熟女精品一区二区成人| 国产精品刮毛视频不卡| 亚洲精品福利视频在线观看| 熟女少妇久久一区二区三区| 一区二区三区四区亚洲专区| 激情五月综五月综合网| 精品人妻av区波多野结依| 大尺度剧情国产在线视频| 国产一区在线免费国产一区| 欧美亚洲国产日韩一区二区| 免费特黄欧美亚洲黄片| 国产在线成人免费高清观看av| 欧美亚洲国产日韩一区二区| 亚洲欧美日韩综合在线成成| 色婷婷激情五月天丁香| 中文字幕乱码一区二区三区四区| 久久99精品日韩人妻| 日韩女优视频国产一区| 中文字幕乱子论一区二区三区 | 亚洲深夜精品福利一区| 97人妻精品一区二区三区免| 国产不卡最新在线视频| 国产精品欧美激情在线观看| 国产精品国产亚洲看不卡| 国产福利一区二区久久| 亚洲国产香蕉视频在线观看| 亚洲一区二区三区精选|