安卓開發中的setTag()/getTag()
阿新 • • 發佈:2019-01-31
View中的setTag(Onbect)表示給View新增一個格外的資料,以後可以用getTag()將這個資料取出來。
可以用在多個Button新增一個監聽器,每個Button都設定不同的setTag。這個監聽器就通過getTag來分辨是哪個Button 被按下。
-
import android.app.Activity;
-
import android.os.Bundle;
-
import android.view.View;
-
import android.widget.Button;
-
public class Main extends Activity {
-
@Override
-
public void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.main);
-
Button button1 = (Button) findViewById(R.id.Button01);
-
Button button2 = (Button) findViewById(R.id.Button02);
-
Button button3 = (Button) findViewById(R.id.Button03);
-
Button button4 = (Button) findViewById(R.id.Button04);
-
MyListener listener = new MyListener();
-
button1.setTag(1);
-
button1.setOnClickListener(listener);
-
button2.setTag(2);
-
button2.setOnClickListener(listener);
-
button3.setTag(3);
-
button3.setOnClickListener(listener);
-
button4.setTag(4);
-
button4.setOnClickListener(listener);
-
}
-
public class MyListener implements View.OnClickListener {
-
@Override
-
public void onClick(View v) {
-
int tag = (Integer) v.getTag();
-
switch (tag) {
-
case 1:
-
System.out.println("button1 click");
-
break;
-
case 2:
-
System.out.println("button2 click");
-
break;
-
case 3:
-
System.out.println("button3 click");
-
break;
-
case 4:
-
System.out.println("button4 click");
-
break;
-
}
-
}
-
}
- }
-
public View getView(int position, View convertView, ViewGroup parent) {
-
ViewHolder vh;
-
if (convertView == null) {
-
LayoutInflater inflater = (LayoutInflater) mWidgetsSwitchApp
-
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-
convertView = inflater.inflate(R.layout.app_gallery_item, null);
-
vh = new ViewHolder();
-
vh.view1 = (ImageView) convertView.findViewById(R.id.view1);
-
vh.view2 = (ImageView) convertView.findViewById(R.id.view2);
-
vh.view3= (ImageView) convertView.findViewById(R.id.view3);
-
vh.view4 = (ImageView) convertView.findViewById(R.id.view4);
-
convertView.setTag(vh);
-
} else {
-
vh = (ViewHolder) convertView.getTag();
-
}
-
//其他的程式碼可以直接使用 vh.view1、vh.view2、vh.view3 、vh.view4
- }
-
Java程式碼
-
for (int i = 0; i < 20; i++) {
-
cells[i] = (ImageView) findViewById(cellIDs[i]);
-
cells[cellnumber++].setOnClickListener(new OnClickListener() {
-
public void onClick(View v){
-
cellClicked(cellnumber, v);
-
}
-
});
- }
-
Java程式碼
-
OnClickListener listener = new OnClickListener() {
-
public void onClick(View v) {
-
int cellId = (Integer) v.getTag();
-
cellClicked(cellId, v);
-
}
-
}
-
View v;
-
for (int i = 0; i < 20; i++) {
-
v = findViewById(cellIDs[i]);
-
v.setOnClickListener(listener);
-
v.setTag(i);
- }