版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android代碼質(zhì)量管理的示例分析
模板方法-基類封裝public
abstract
class
BaseActivity
extends
FragmentActivity
{
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
init();
findViews();
initData();
setListener();
setting();
}
/**
*
獲得上下文
*
@return
Context
*/
public
Context
getContext(){
return
this;
}
/**
*
始化參數(shù)
*/
public
abstract
void
init();
/**
*
查找所有的控件
*/
public
abstract
void
findViews();
/**
*
初始化頁(yè)面數(shù)據(jù)
*/
public
abstract
void
initData();
/**
*
設(shè)置控件的監(jiān)聽事件
*/
public
abstract
void
setListener();
/**
*
后續(xù)參數(shù)設(shè)置
*/
public
abstract
void
setting();
}public
abstract
class
BaseFragment
extends
Fragment
{
@Override
public
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
}
@Override
public
void
onStart()
{
super.onStart();
init();
findViews();
initData();
setListener();
setting();
}
public
Context
getContext()
{
return
getActivity();
}
public
abstract
void
init();
public
abstract
void
findViews();
public
abstract
void
initData();
public
abstract
void
setListener();
public
abstract
void
setting();
}Fragment簡(jiǎn)單管理private
void
showFragment(){
FragmentTransaction
fragmentTransaction
=
getSupportFragmentManager().beginTransaction();
hideFragment(fragmentTransaction);
if
(mFragment1==
null)
{
mFragment1
=
new
MyFragment1(context);
fragmentTransaction.add(R.id.content,
mFragment1);
fragmentTmit();
}
else
{
fragmentTransaction.show(mFragment1);
fragmentTmit();
}
}public
class
FragmentFactory
{
private
FragmentActivity
mContext;
private
static
FragmentFactory
factory
=
new
FragmentFactory();
//用于存儲(chǔ)已創(chuàng)建的Fragment對(duì)象
private
Map<String,
Fragment>
mFragmentMap=new
HashMap<>();
private
int
mLayoutId;
private
FragmentFactory()
{
}
public
static
FragmentFactory
getInstance()
{
return
factory;
}
//layoutId
傳入布局文件的id
public
FragmentFactory
init(FragmentActivity
context,int
layoutId)
{
this.mContext
=
context;
this.mLayoutId=layoutId;
return
factory;
}
public
Activity
getParentActivity()
{
return
mContext;
}
private
<T
extends
Fragment>
Fragment
createFragment(Class<T>
clazz)
{
Fragment
fragment
=
null;
try
{
fragment
=
getFragment(clazz.getName());
FragmentTransaction
fragmentTransaction
=
mContext.getSupportFragmentManager().beginTransaction();
hideFragment(fragmentTransaction);
if
(fragment
==
null)
{
fragment
=
(Fragment)
clazz.newInstance();
setFragment(fragment);
fragmentTransaction.add(mLayoutId,
fragment);
fragmentTmit();
}
else
{
fragmentTransaction.show(fragment);
fragmentTmit();
}
}
catch
(InstantiationException
e)
{
e.printStackTrace();
}
catch
(IllegalAccessException
e)
{
e.printStackTrace();
}
return
fragment;
}
private
<T
extends
Fragment>
Fragment
getFragment(String
className)
{
Fragment
fragment
=
mFragmentMap.get(className);
return
fragment;
}
private
<T
extends
Fragment>
void
setFragment(Fragment
fragment)
throws
InstantiationException,
IllegalAccessException
{
String
className
=
fragment.getClass().getName();
mFragmentMap.put(className,
fragment);
}
private
void
hideFragment(FragmentTransaction
fragmentTransaction)
{
Set<String>
keySet
=
mFragmentMap.keySet();
for
(String
key
:
keySet)
{
Fragment
fragment
=
mFragmentMap.get(key);
fragmentTransaction.hide(fragment);
}
}
public
<T
extends
Fragment>
T
showFragment(Class<T>
clazz)
{
return
(T)
createFragment(clazz);
}
}FragmentFactory
mFragmentFactory
=
FragmentFactory.getInstance().init(this,
R.id.fl_content);
mFragmentFactory.showFragment(MyFragment1.class);
mFragmentFactory.showFragment(MyFragment2.class);簡(jiǎn)單通用的適配器public
abstract
class
CommonAdapter<T>
extends
BaseAdapter
{
//需要顯示的數(shù)據(jù),List中的類型為泛型,因?yàn)椴恢烙脩舻姆庋bBean
private
List<T>
mDatas;
private
Context
mContext;
//布局文件Id
private
int
mLayoutId;
public
CommonAdapter(Context
context,List<T>
data,int
layoutId)
{
mDatas
=
data;
mContext
=
context;
mLayoutId
=
layoutId;
}
@Override
public
int
getCount()
{
return
mDatas.size();
}
@Override
public
Object
getItem(int
position)
{
return
mDatas.get(position);
}
@Override
public
long
getItemId(int
position)
{
return
position;
}
@Override
public
View
getView(int
position,
View
convertView,
ViewGroup
parent)
{
ViewHolder
holder
=
ViewHolder.getHolder(mContext,convertView,
parent,
mLayoutId);
setDatas(holder,getItem(position));
return
holder.getConvertView();
}
/**
*
為各個(gè)item中的控件設(shè)置數(shù)據(jù)
*
@param
holder
ViewHolder
*
@param
object
從集合中所取的一個(gè)對(duì)象
*/
public
abstract
void
setDatas(ViewHolder
holder,
Object
object);
}public
class
ViewHolder
{
private
View
mConvertView;
//用來(lái)存布局中的各個(gè)組件,以鍵值對(duì)形式
private
HashMap<Integer,View>
mViews
=
new
HashMap<>();
//ViewHolder構(gòu)造函數(shù),只有當(dāng)convertView為空的時(shí)候才創(chuàng)建
public
ViewHolder(Context
context,View
convertView,
ViewGroup
parent,
int
layouId)
{
convertView
=
LayoutInflater.from(context).inflate(layouId,parent,false);
convertView.setTag(this);
//將其setTag()
mConvertView
=
convertView;
}
//返回一個(gè)ViewHolder對(duì)象
public
static
ViewHolder
getHolder(Context
context,
View
convertView,
ViewGroup
parent,
int
layoutId)
{
if
(convertView
==
null)
{
return
new
ViewHolder(context,convertView,parent,layoutId);
}else
{
return
(ViewHolder)
convertView.getTag();
}
}
//返回一個(gè)View的子類對(duì)象,因?yàn)椴淮_定用戶布局有什么組件,相當(dāng)于findViewById
//這里返回一個(gè)泛型,也可以返回一個(gè)View或Object
public
<T
extends
View>T
getView(int
resId)
{
View
view
=
mViews.get(resId);
//從集合中取出這個(gè)組件
if
(view
==
null)
{
//如果為空,說明為第一屏
view
=
mConvertView.findViewById(resId);
//從convertView中找
mViews.put(resId,view);
}
return
(T)
view;
}
public
View
getConvertView()
{
return
mConvertView;
}
}public
class
MyAdapter
extends
CommonAdapter<Bean>
{
public
MyAdapter(Context
context,
List<Bean>
data,
int
layoutId)
{
super(context,
data,
layoutId);
}
@Override
public
void
setDatas(ViewHolder
holder,
Object
object)
{
Bean
bean
=
(Bean)
object;
((TextView)holder.getView(R.id.title_Tv)).setText(bean.getTitle());
((TextView)holder.getView(R.id.desc_Tv)).setText(bean.getDesc());
((TextView)holder.getView(R.id.time_Tv)).setText(bean.getTime());
((TextView)holder.getView(R.id.phone_Tv)).setText(bean.getPhone());
}
}
List<Bean>
data=new
ArrayList<>();
Bean
bean=new
Bean("標(biāo)題1",
"內(nèi)容1",
"時(shí)間1",
);
Bean
bean2=new
Bean("標(biāo)題2",
"內(nèi)容2",
"時(shí)間2",
);
data.add(bean);
data.add(bean2);
listView.setAdapter(new
MyAdapter(context,
data,
R.layout.listview_item));/upload/information/20200623/125/123029.jpg面向接口編程public
interface
IManager
{
void
setBackLi
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年江財(cái)翻碩復(fù)試筆試及答案
- 2025年工商管理類專任教師筆試及答案
- 2026新興際華集團(tuán)所屬中新聯(lián)公司招聘事業(yè)部總經(jīng)理副總經(jīng)理考試備考試題及答案解析
- 2026重慶市屬事業(yè)單位第一季度招聘242人筆試備考題庫(kù)及答案解析
- 2026陜西西安市高陵區(qū)廉潔征兵考試備考試題及答案解析
- 2026季華實(shí)驗(yàn)室科研部門招聘5人(廣東)考試參考題庫(kù)及答案解析
- 2026年改性塑料的力學(xué)性能測(cè)試
- 2026年上半年云南農(nóng)業(yè)職業(yè)技術(shù)學(xué)院招聘碩士人員(5人)筆試備考題庫(kù)及答案解析
- 2026河南封丘縣中醫(yī)院招聘醫(yī)養(yǎng)結(jié)合護(hù)工人員6名筆試模擬試題及答案解析
- 2026貴州玉屏侗族自治縣事業(yè)單位招聘41人筆試參考題庫(kù)及答案解析
- 2023年魯迅美術(shù)學(xué)院附屬中學(xué)(魯美附中)中考招生語(yǔ)文試卷
- 工廠網(wǎng)絡(luò)設(shè)計(jì)方案
- 福建省泉州市2023-2024學(xué)年高一上學(xué)期期末教學(xué)質(zhì)量監(jiān)測(cè)政治試題
- 日文常用漢字表
- JCT947-2014 先張法預(yù)應(yīng)力混凝土管樁用端板
- QC003-三片罐206D鋁蓋檢驗(yàn)作業(yè)指導(dǎo)書
- 高血壓達(dá)標(biāo)中心標(biāo)準(zhǔn)要點(diǎn)解讀及中心工作進(jìn)展-課件
- 某經(jīng)濟(jì)技術(shù)開發(fā)區(qū)突發(fā)事件風(fēng)險(xiǎn)評(píng)估和應(yīng)急資源調(diào)查報(bào)告
- 混凝土質(zhì)量缺陷成因及預(yù)防措施1
- GB/T 28288-2012足部防護(hù)足趾保護(hù)包頭和防刺穿墊
- GB/T 15087-1994汽車牽引車與全掛車機(jī)械連接裝置強(qiáng)度試驗(yàn)
評(píng)論
0/150
提交評(píng)論