Android 在碎片活动中使用onclicklistener?
我准备了一个onclicklistener列表视图,将其放在选项卡菜单中,但毕竟,我已经注意到这样的事情是不可能的,我不知道可能只是对代码做了一点小小的更改,我就可以实现我所需的,但我的大脑由于欺骗而严重停止了:(:Android 在碎片活动中使用onclicklistener?,android,Android,我准备了一个onclicklistener列表视图,将其放在选项卡菜单中,但毕竟,我已经注意到这样的事情是不可能的,我不知道可能只是对代码做了一点小小的更改,我就可以实现我所需的,但我的大脑由于欺骗而严重停止了:(: public类MainActivity扩展了FragmentActivity{ 私有最终处理程序=新处理程序(); 专用页滑动选项卡; 私人寻呼机; 专用MyPagerAdapter适配器; 私有可绘制oldBackground=null; 私有int currentColor=0
public类MainActivity扩展了FragmentActivity{
私有最终处理程序=新处理程序();
专用页滑动选项卡;
私人寻呼机;
专用MyPagerAdapter适配器;
私有可绘制oldBackground=null;
私有int currentColor=0xFF666666;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tabs=(PagerSlidingTabStrip)findViewById(R.id.tabs);
pager=(ViewPager)findViewById(R.id.pager);
适配器=新的MyPagerAdapter(getSupportFragmentManager());
寻呼机设置适配器(适配器);
最终整数页边距=(整数)
TypedValue.applyDimension(TypedValue.COMPLEX\u UNIT\u DIP,4,getResources()
.getDisplayMetrics());
pager.setPageMargin(页边距);
tabs.setViewPager(寻呼机);
更改颜色(当前颜色);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例R.id.行动\联系方式:
QuickContactFragment对话框=新建QuickContactFragment();
show(getSupportFragmentManager(),“QuickContactFragment”);
返回true;
}
返回super.onOptionsItemSelected(项目);
}
私有void changeColor(int newColor){
tabs.setIndicatorColor(新颜色);
//仅在操作栏可用时更改操作栏颜色
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.HONEYCOMB){
可拉伸彩色可拉伸=新可拉伸彩色(newColor);
可拉伸底部可拉伸=
getResources().getDrawable(R.drawable.actionbar_底部);
LayerDrawable ld=新的LayerDrawable(新的Drawable[]{
彩色可拉深、底部可拉深});
如果(oldBackground==null){
如果(Build.VERSION.SDK_INT)
Build.VERSION\u code.JELLY\u BEAN\u MR1){
ld.setCallback(drawableCallback);
}否则{
getActionBar().setBackgroundDrawable(ld);
}
}否则{
TransitionDrawable td=新的TransitionDrawable(新的
可绘制[]{oldBackground,ld});
//破碎ActionBar容器可拉伸的解决方法
处理
//API 17之前的版本
// https://github.com/android/platform_frameworks_base
/提交/a7cc06d82e45918c37429a59b14545c6a57db4e4
如果(Build.VERSION.SDK_INT)
Build.VERSION\u code.JELLY\u BEAN\u MR1){
td.setCallback(drawableCallback);
}否则{
getActionBar().setBackgroundDrawable(td);
}
td.启动转换(200);
}
oldBackground=ld;
// http://stackoverflow.com/questions/11002691/actionbar-
来自线程处理程序的setbackgrounddrawable可调零背景
getActionBar().setDisplayShowTitleEnabled(false);
getActionBar().setDisplayShowTitleEnabled(true);
}
currentColor=newColor;
}
已单击的公共空间(视图v){
int color=color.parseColor(v.getTag().toString());
变色;
}
@凌驾
SaveInstanceState上受保护的无效(束超出状态){
super.onSaveInstanceState(超出状态);
outState.putInt(“currentColor”,currentColor);
}
@凌驾
RestoreInstanceState上的受保护无效(Bundle savedInstanceState){
super.onRestoreInstanceState(savedInstanceState);
currentColor=savedInstanceState.getInt(“currentColor”);
更改颜色(当前颜色);
}
private Drawable.Callback drawableCallback=新的Drawable.Callback(){
@凌驾
公共无效可撤销(可撤销who){
getActionBar().setBackgroundDrawable(世卫组织);
}
@凌驾
public void scheduledawable(可提取谁、可运行什么、长时间){
handler.posttime(什么,什么时候);
}
@凌驾
公共无效计划外可撤销(可撤销谁、可运行什么){
handler.removeCallbacks(什么);
}
};
公共类MyPagerAdapter扩展了FragmentPagerAdapter{
私有最终字符串[]标题={“类别”、“家庭”、“最高工资”};
公共MyPagerAdapter(碎片管理器fm){
超级(fm);
}
@凌驾
公共字符序列getPageTitle(int位置){
返回标题[职位];
}
@凌驾
public int getCount(){
返回标题。长度;
}
@凌驾
公共片段getItem(int索引){
开关(索引){
案例0:
//顶级碎片活性
返回新的TopRatedFragment();
案例1:
//游戏片段活动
返回新游戏片段();
案例2:
//电影片段活动
返回新的MoviesFragment();
}
返回null;
}
}
}
这里是我心爱的listview:
public class PinnedSectionListActivity extends ListActivity implements
OnClickListener {
static class SimpleAdapter extends ArrayAdapter<Item> implements
PinnedSectionListAdapter {
private static final int[] COLORS = new int[] {
android.R.color.holo_green_light, android.R.color.holo_orange_dark,
android.R.color.holo_blue_light, android.R.color.holo_red_light };
public SimpleAdapter(Context context, int resource, int textViewResourceId) {
super(context, resource, textViewResourceId);
final int sectionsNumber = 'Z' - 'A' + 1;
prepareSections(sectionsNumber);
int sectionPosition = 0, listPosition = 0;
for (char i=0; i<sectionsNumber; i++) {
Item section = new Item(Item.SECTION, String.valueOf((char)('A' + i)));
section.sectionPosition = sectionPosition;
section.listPosition = listPosition++;
onSectionAdded(section, sectionPosition);
add(section);
final int itemsNumber = (int) Math.abs((Math.cos(2f*Math.PI/3f *
sectionsNumber / (i+1f)) * 25f));
for (int j=0;j<itemsNumber;j++) {
Item item = new Item(Item.ITEM,
section.text.toUpperCase(Locale.ENGLISH) + " - " + j);
item.sectionPosition = sectionPosition;
item.listPosition = listPosition++;
add(item);
}
sectionPosition++;
}
}
protected void prepareSections(int sectionsNumber) { }
protected void onSectionAdded(Item section, int sectionPosition) { }
@Override public View getView(int position, View convertView, ViewGroup parent) {
TextView view = (TextView) super.getView(position, convertView, parent);
view.setTextColor(Color.DKGRAY);
view.setTag("" + position);
Item item = getItem(position);
if (item.type == Item.SECTION) {
//view.setOnClickListener(PinnedSectionListActivity.this);
view.setBackgroundColor(parent.getResources().getColor(COLORS[item.sectionPosition %
COLORS.length]));
}
return view;
}
@Override public int getViewTypeCount() {
return 2;
}
@Override public int getItemViewType(int position) {
return getItem(position).type;
}
@Override
public boolean isItemViewTypePinned(int viewType) {
return viewType == Item.SECTION;
}
}
static class FastScrollAdapter extends SimpleAdapter implements SectionIndexer {
private Item[] sections;
public FastScrollAdapter(Context context, int resource, int textViewResourceId) {
super(context, resource, textViewResourceId);
}
@Override protected void prepareSections(int sectionsNumber) {
sections = new Item[sectionsNumber];
}
@Override protected void onSectionAdded(Item section, int sectionPosition) {
sections[sectionPosition] = section;
}
@Override public Item[] getSections() {
return sections;
}
@Override public int getPositionForSection(int section) {
if (section >= sections.length) {
section = sections.length - 1;
}
return sections[section].listPosition;
}
@Override public int getSectionForPosition(int position) {
if (position >= getCount()) {
position = getCount() - 1;
}
return getItem(position).sectionPosition;
}
}
static class Item {
public static final int ITEM = 0;
public static final int SECTION = 1;
public final int type;
public final String text;
public int sectionPosition;
public int listPosition;
public Item(int type, String text) {
this.type = type;
this.text = text;
}
@Override public String toString() {
return text;
}
}
private boolean hasHeaderAndFooter;
private boolean isFastScroll;
private boolean addPadding;
private boolean isShadowVisible = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.contacts);
if (savedInstanceState != null) {
isFastScroll = savedInstanceState.getBoolean("isFastScroll");
addPadding = savedInstanceState.getBoolean("addPadding");
isShadowVisible = savedInstanceState.getBoolean("isShadowVisible");
hasHeaderAndFooter =
savedInstanceState.getBoolean("hasHeaderAndFooter");
}
initializeHeaderAndFooter();
initializeAdapter();
initializePadding();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean("isFastScroll", isFastScroll);
outState.putBoolean("addPadding", addPadding);
outState.putBoolean("isShadowVisible", isShadowVisible);
outState.putBoolean("hasHeaderAndFooter", hasHeaderAndFooter);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Item item = (Item) getListView().getAdapter().getItem(position);
if (item != null) {
Toast.makeText(this, "Item " + position + ": " + item.text,
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Item " + position, Toast.LENGTH_SHORT).show();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
menu.getItem(0).setChecked(isFastScroll);
menu.getItem(1).setChecked(addPadding);
menu.getItem(2).setChecked(isShadowVisible);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_fastscroll:
isFastScroll = !isFastScroll;
item.setChecked(isFastScroll);
initializeAdapter();
break;
case R.id.action_addpadding:
addPadding = !addPadding;
item.setChecked(addPadding);
initializePadding();
break;
case R.id.action_showShadow:
isShadowVisible = !isShadowVisible;
item.setChecked(isShadowVisible);
((PinnedSectionListView)getListView()).setShadowVisible(isShadowVisible);
break;
case R.id.action_showHeaderAndFooter:
hasHeaderAndFooter = !hasHeaderAndFooter;
item.setChecked(hasHeaderAndFooter);
initializeHeaderAndFooter();
break;
}
return true;
}
private void initializePadding() {
float density = getResources().getDisplayMetrics().density;
int padding = addPadding ? (int) (16 * density) : 0;
getListView().setPadding(padding, padding, padding, padding);
}
private void initializeHeaderAndFooter() {
setListAdapter(null);
if (hasHeaderAndFooter) {
ListView list = getListView();
LayoutInflater inflater = LayoutInflater.from(this);
TextView header1 = (TextView)
inflater.inflate(android.R.layout.simple_list_item_1, list, false);
header1.setText("First header");
list.addHeaderView(header1);
TextView header2 = (TextView)
inflater.inflate(android.R.layout.simple_list_item_1, list, false);
header2.setText("Second header");
list.addHeaderView(header2);
TextView footer = (TextView)
inflater.inflate(android.R.layout.simple_list_item_1, list, false);
footer.setText("Single footer");
list.addFooterView(footer);
}
initializeAdapter();
}
@SuppressLint("NewApi")
private void initializeAdapter() {
getListView().setFastScrollEnabled(isFastScroll);
if (isFastScroll) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
getListView().setFastScrollAlwaysVisible(true);
}
setListAdapter(new FastScrollAdapter(this,
android.R.layout.simple_list_item_1, android.R.id.text1));
} else {
setListAdapter(new SimpleAdapter(this, android.R.layout.simple_list_item_1,
android.R.id.text1));
}
}
@Override
public void onClick(View v) {
Toast.makeText(this, "Item: " + v.getTag() , Toast.LENGTH_SHORT).show();
}
}
公共类PinnedSectionListActivity扩展ListActivity实现
onclick侦听器{
静态类SimpleAdapter扩展了ArrayAdapter实现
PinnedSectionListAdapter{
私有静态最终int[]颜色=新int[]{
android.R.color.holo_绿色_灯,android.R.color.holo_橙色_暗,
android.R.color.holo_蓝光,android.R.color.holo_红灯};
公共SimpleAdapter(上下文上下文、int资源、int文本视图资源ID){
超级(上下文、资源、textViewResourceId);
最终整数部分序号='Z'-'A'+1;
准备章节(章节编号);
int sectionPosition=0,listPosition=0;
for(char i=0;i=getCount()){
position=getCount()-1;
}
返回getItem(位置).sectionPosition;
}
}
静态类项{
公共静态最终整数项=0;
普布利
public class PinnedSectionListActivity extends ListActivity implements
OnClickListener {
static class SimpleAdapter extends ArrayAdapter<Item> implements
PinnedSectionListAdapter {
private static final int[] COLORS = new int[] {
android.R.color.holo_green_light, android.R.color.holo_orange_dark,
android.R.color.holo_blue_light, android.R.color.holo_red_light };
public SimpleAdapter(Context context, int resource, int textViewResourceId) {
super(context, resource, textViewResourceId);
final int sectionsNumber = 'Z' - 'A' + 1;
prepareSections(sectionsNumber);
int sectionPosition = 0, listPosition = 0;
for (char i=0; i<sectionsNumber; i++) {
Item section = new Item(Item.SECTION, String.valueOf((char)('A' + i)));
section.sectionPosition = sectionPosition;
section.listPosition = listPosition++;
onSectionAdded(section, sectionPosition);
add(section);
final int itemsNumber = (int) Math.abs((Math.cos(2f*Math.PI/3f *
sectionsNumber / (i+1f)) * 25f));
for (int j=0;j<itemsNumber;j++) {
Item item = new Item(Item.ITEM,
section.text.toUpperCase(Locale.ENGLISH) + " - " + j);
item.sectionPosition = sectionPosition;
item.listPosition = listPosition++;
add(item);
}
sectionPosition++;
}
}
protected void prepareSections(int sectionsNumber) { }
protected void onSectionAdded(Item section, int sectionPosition) { }
@Override public View getView(int position, View convertView, ViewGroup parent) {
TextView view = (TextView) super.getView(position, convertView, parent);
view.setTextColor(Color.DKGRAY);
view.setTag("" + position);
Item item = getItem(position);
if (item.type == Item.SECTION) {
//view.setOnClickListener(PinnedSectionListActivity.this);
view.setBackgroundColor(parent.getResources().getColor(COLORS[item.sectionPosition %
COLORS.length]));
}
return view;
}
@Override public int getViewTypeCount() {
return 2;
}
@Override public int getItemViewType(int position) {
return getItem(position).type;
}
@Override
public boolean isItemViewTypePinned(int viewType) {
return viewType == Item.SECTION;
}
}
static class FastScrollAdapter extends SimpleAdapter implements SectionIndexer {
private Item[] sections;
public FastScrollAdapter(Context context, int resource, int textViewResourceId) {
super(context, resource, textViewResourceId);
}
@Override protected void prepareSections(int sectionsNumber) {
sections = new Item[sectionsNumber];
}
@Override protected void onSectionAdded(Item section, int sectionPosition) {
sections[sectionPosition] = section;
}
@Override public Item[] getSections() {
return sections;
}
@Override public int getPositionForSection(int section) {
if (section >= sections.length) {
section = sections.length - 1;
}
return sections[section].listPosition;
}
@Override public int getSectionForPosition(int position) {
if (position >= getCount()) {
position = getCount() - 1;
}
return getItem(position).sectionPosition;
}
}
static class Item {
public static final int ITEM = 0;
public static final int SECTION = 1;
public final int type;
public final String text;
public int sectionPosition;
public int listPosition;
public Item(int type, String text) {
this.type = type;
this.text = text;
}
@Override public String toString() {
return text;
}
}
private boolean hasHeaderAndFooter;
private boolean isFastScroll;
private boolean addPadding;
private boolean isShadowVisible = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.contacts);
if (savedInstanceState != null) {
isFastScroll = savedInstanceState.getBoolean("isFastScroll");
addPadding = savedInstanceState.getBoolean("addPadding");
isShadowVisible = savedInstanceState.getBoolean("isShadowVisible");
hasHeaderAndFooter =
savedInstanceState.getBoolean("hasHeaderAndFooter");
}
initializeHeaderAndFooter();
initializeAdapter();
initializePadding();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean("isFastScroll", isFastScroll);
outState.putBoolean("addPadding", addPadding);
outState.putBoolean("isShadowVisible", isShadowVisible);
outState.putBoolean("hasHeaderAndFooter", hasHeaderAndFooter);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Item item = (Item) getListView().getAdapter().getItem(position);
if (item != null) {
Toast.makeText(this, "Item " + position + ": " + item.text,
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Item " + position, Toast.LENGTH_SHORT).show();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
menu.getItem(0).setChecked(isFastScroll);
menu.getItem(1).setChecked(addPadding);
menu.getItem(2).setChecked(isShadowVisible);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_fastscroll:
isFastScroll = !isFastScroll;
item.setChecked(isFastScroll);
initializeAdapter();
break;
case R.id.action_addpadding:
addPadding = !addPadding;
item.setChecked(addPadding);
initializePadding();
break;
case R.id.action_showShadow:
isShadowVisible = !isShadowVisible;
item.setChecked(isShadowVisible);
((PinnedSectionListView)getListView()).setShadowVisible(isShadowVisible);
break;
case R.id.action_showHeaderAndFooter:
hasHeaderAndFooter = !hasHeaderAndFooter;
item.setChecked(hasHeaderAndFooter);
initializeHeaderAndFooter();
break;
}
return true;
}
private void initializePadding() {
float density = getResources().getDisplayMetrics().density;
int padding = addPadding ? (int) (16 * density) : 0;
getListView().setPadding(padding, padding, padding, padding);
}
private void initializeHeaderAndFooter() {
setListAdapter(null);
if (hasHeaderAndFooter) {
ListView list = getListView();
LayoutInflater inflater = LayoutInflater.from(this);
TextView header1 = (TextView)
inflater.inflate(android.R.layout.simple_list_item_1, list, false);
header1.setText("First header");
list.addHeaderView(header1);
TextView header2 = (TextView)
inflater.inflate(android.R.layout.simple_list_item_1, list, false);
header2.setText("Second header");
list.addHeaderView(header2);
TextView footer = (TextView)
inflater.inflate(android.R.layout.simple_list_item_1, list, false);
footer.setText("Single footer");
list.addFooterView(footer);
}
initializeAdapter();
}
@SuppressLint("NewApi")
private void initializeAdapter() {
getListView().setFastScrollEnabled(isFastScroll);
if (isFastScroll) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
getListView().setFastScrollAlwaysVisible(true);
}
setListAdapter(new FastScrollAdapter(this,
android.R.layout.simple_list_item_1, android.R.id.text1));
} else {
setListAdapter(new SimpleAdapter(this, android.R.layout.simple_list_item_1,
android.R.id.text1));
}
}
@Override
public void onClick(View v) {
Toast.makeText(this, "Item: " + v.getTag() , Toast.LENGTH_SHORT).show();
}
}