編輯:關於Android編程
Android注解式綁定控件BindView
package com.practice.noyet.coolweather.util;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface BindView {
int id();
boolean click() default false;
}
package com.practice.noyet.coolweather.util;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.Fragment;
import android.content.Context;
import android.util.Log;
import android.view.View;
import java.lang.reflect.Field;
public class AnnotateUtil {
public AnnotateUtil() {
}
public static void initBindView(Object currentClass, View sourceView) {
Field[] fields = currentClass.getClass().getDeclaredFields();
if(fields != null && fields.length > 0) {
Field[] var6 = fields;
int var5 = fields.length;
for(int var4 = 0; var4 < var5; ++var4) {
Field field = var6[var4];
BindView bindView = (BindView)field.getAnnotation(BindView.class);
if(bindView != null) {
int viewId = bindView.id();
boolean clickLis = bindView.click();
try {
field.setAccessible(true);
if(clickLis) {
sourceView.findViewById(viewId).setOnClickListener((View.OnClickListener)currentClass);
}
field.set(currentClass, sourceView.findViewById(viewId));
} catch (Exception var11) {
var11.printStackTrace();
}
}
}
}
}
public static void initBindView(Activity aty) {
initBindView(aty, aty.getWindow().getDecorView());
}
public static void initBindView(View view) {
Context cxt = view.getContext();
if(cxt instanceof Activity) {
initBindView((Activity)cxt);
} else {
Log.d(AnnotateUtil.java, the view don't have root view);
}
}
@TargetApi(11)
public static void initBindView(Fragment frag) {
initBindView(frag, frag.getActivity().getWindow().getDecorView());
}
}
Activity、Fragment中:
@BindView(id = R.id.headerlayout)
private HeaderLayout headerLayout;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.acitvity_weather);
AnnotateUtil.initBindView(this);
}
Adapter的ViewHolder中:
package com.practice.noyet.coolweather.adapter;
import android.content.Context;
import android.graphics.Color;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.practice.noyet.coolweather.model.County;
import com.practice.noyet.coolweather.util.AnnotateUtil;
import com.practice.noyet.coolweather.util.BindView;
public class SpinnerArrayAdapter extends SpinnerAdapter {
public SpinnerArrayAdapter(Context context) {
super(context);
}
@Override
public View getView(int position, View view, ViewGroup viewGroup) {
Holder holder;
if (view == null) {
view = mInflater.inflate(android.R.layout.simple_list_item_1, null);
holder = new Holder(view);
view.setTag(holder);
} else {
holder = (Holder) view.getTag();
}
County county = (County) getItem(position);
holder.textView.setText(county.getCountyName());
return view;
}
private class Holder {
@BindView(id = android.R.id.text1)
public TextView textView;
public Holder(View view) {
AnnotateUtil.initBindView(this, view);
}
}
}
簡介 在Android中運用了很多機制,例如:廣播、服務、數據庫、通知、包……等等。什麼是廣播?Broadcast是一種廣泛運用的在應用程序之間傳輸
有時候我們需要在游戲或應用中用一些符合我們樣式的提示框(AlertDialog),以下是我在開發一個小游戲中總結出來的.希望對大家有用.先上效果圖:下面是用到的背景圖或按
實現ActionBar隱藏顯示,TextView懸停條目記得styles.xml裡,把主題設置為NoActionBaractivity_main.xml:
效果如下:看代碼:MainActivity類中: package com.example.ceshidemo;import java.io.ByteArrayO