Android位址選擇(類似手機通訊錄)

2021-06-29 16:28:48 字數 3193 閱讀 7943

**的乙個結構

1.右側自定義bar的部分**

首先重寫ondraw方法

/**

* 重寫

*@param canvas

*/@override

protected

void

ondraw(canvas canvas)

//x座標等於中間-字串寬度的一辦(????????)

float xpos=width/2-paint.measuretext(b[i])/2;

float ypos=singleheight*i+singleheight;

canvas.drawtext(b[i],xpos,ypos,paint);

paint.reset();//重置畫筆}}

重寫dispatchtouchevent方法

/**

* 重寫

*@param event

*@return

*/@targetapi(build.version_codes.jelly_bean)

@override

public

boolean

dispatchtouchevent(motionevent event)

break;

default:

setbackgroundresource(r.drawable.sidebar_background);

if(oldchoose!=c)

if(mtextdialog!=null)

choose=c;

invalidate();}}

break;

}return

true;

}

向外開發介面

/**

* 向外公開的方法

*@param ontouchingletterchangedlistener

*/public

void

setontouchingletterchangedlistener(ontouchingletterchangedlistener ontouchingletterchangedlistener)

2.adapter關鍵**,以province的adapter為例,繼承自sectionindexer

/**

* 根據listview的當前位置獲取匪類的首字母的char ascii值

*@param position

*@return

*/public

intgetsectionforposition(int position)

/*** 根據分類的首字母的char ascii值獲取其第一次出現該首字母的位置

*@param section

*@return

*/public

intgetpositionforsection(int section)

}return -1;

}

然後getview裡面判斷顯示效果,是否顯示字母,在**顯示字母

@override

public view getview(final int i, view view, viewgroup viewgroup)

else

//根據position獲取分類的首字母的char ascii值

int section=getsectionforposition(i);

//如果當前位置等於該分類首字母的char的位置,則認為是第一次出現

if(i==getpositionforsection(section))

else

holder.tvtitle

.settext(this.list

.get(i).getprovincename());

return view;

}

3.再貼乙個provinceactivity的類

public

class

provinceactivity

extends

activity

private

void

initview()

}});

sortlistview= (listview) findviewbyid(r.id.lv_pro);

sortlistview.setonitemclicklistener(new adapterview.onitemclicklistener()

});//獲取資料

volley_get();

}@override

protected

void

onactivityresult(int requestcode, int resultcode, intent data)

}super.onactivityresult(requestcode, resultcode, data);

}/**

* volley載入資料

*/private

void

volley_get().gettype();

try catch (jsonexception e)

}},new response.errorlistener()

});mqueue.add(jsonobjectrequest);

}/**

* 為listview填充資料

*@param

*@return

*/private listfilleddata(listlist)else

msortlist.add(province);

}return msortlist;}}

ok,貼上了部分**,而且很多關鍵地方我也在**中加了注釋。還是那句話,自己動手實現一把才能在今後用到的時候方便使用。

最後放上原始碼

有種戳死我!!!

Android 手機獲取Mac位址的幾種方法

最常用的方法,通過wifimanager獲取 通過wifimanager獲取mac位址 param context return private static string trygetwifimac context context if 02 00 00 00 00 00 equals wi.ge...

類似gitbook的wiki選擇

一直以來,都使用xwiki作為團隊內部的文件管理工具,但一直想換乙個比較輕量級的系統。團隊成員普遍對gitbook風格有好感,於是先後試用了mdwiki dokuwiki hexo mindoc wikitten。mdwiki 純粹用ajax寫的,部署最簡單,但是目錄只能兩級 dokuwiki ph...

關於android4 0 獲取手機IP位址的問題

public static string getlocalipaddress catch socketexception e return null 但是在4.0 下 會出現類似fe80 b607 f9ff fee5 487e的ip位址,這個是ipv6的位址,我們需要獲得是的ipv4的位址,所以要在...