編輯:關於Android編程
首先我們要知道setTag方法是干什麼的,SDK解釋為
Tags
Unlike IDs, tags are not used to identify views. Tags are essentially an extra piece of information that can be associated with a view. They are most often used as a convenience to store data related to views in the views themselves rather than by putting them in a separate structure.
Tag不像ID是用標示view的。Tag從本質上來講是就是相關聯的view的額外的信息。
它們經常用來存儲一些view的數據,這樣做非常方便而不用存入另外的單獨結構。
Tag有一個特點,綁定數據到指定控件(view),而不顯示出來。
setTag是android的view類中很有用的一個方法,
與setId()不同,findViewById找到的是對象本身。
而setTag(),取出來的是對象所指向的對象。
在同一個類中,存取數據很方便,不用數據庫建庫,
也比sharePreference更節約內存。
setTag(Object tag)方法比較簡單
比如
TextView tvExecutor = (TextView)findViewById(R.id.t);
tvExecutor.setTag(selectedUserMap);
這個selectedUserMap
可以使Map
也可以是LinkedList
可以存儲各種臨時數據,但是還不能稱其為存儲方式。
在開發中,我們可以使用setTag(),getTag(),存取數據。
可不可以一個對象,設置多個Tag呢?答案是肯定的
在res/values/strings.xml中添加
在activity中,使用的時候寫成
tvExecutor.setTag(R.id.tag_a, "逗比");
tvExecutor.setTag(R.id.tag_b, "2貨");
其實用的最多的是convertView中
1. 對於使用了LayoutInflater對象進行View擴充的Tag的使用
在之前,在adapter中,我們在getView中是這麼些的代碼:
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.vlist2, null);
holder.img = (ImageView) convertView.findViewById(R.id.img);
holder.title = (TextView) convertView.findViewById(R.id.title);
holder.info = (TextView)
convertView.findViewById(R.id.info);
// setTag的妙用
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
……略
}
例子3 在onClick點擊事件中,使用tagsetTag()/getTag()
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;
}
}
}
}
使用Intent調用語音識別程序說明Android中主要通過RecognizerIntent來實現語音識別,其實代碼比較簡單,但是如果找不到語音識別設備,就會拋出異常 A
在Android系統中提供了多種存儲技術.通過這些存儲技術可以將數據存儲在各種存儲介質上.比如sharedpreferences可以將數據保存著應用軟件的私有存儲區,這些
本文來自http://blog.csdn.net/hellogv/ ,引用必須注明出處! 上次講了Android手機與BLE終端之間的通信,而最常見的BLE終端應該是蘋果
1)首先先將gitlab上的開發項目clone到本地(可以使用命令行或者管理工具,具體操作在GitLab中已經涉及,這裡不再贅述),然後導入到AndroidStudio中