【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android代碼質(zhì)量管理的示例分析_第1頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android代碼質(zhì)量管理的示例分析_第2頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android代碼質(zhì)量管理的示例分析_第3頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android代碼質(zhì)量管理的示例分析_第4頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android代碼質(zhì)量管理的示例分析_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論