androidsetid
① 求教Android,動態添加到控制項能動態刪除嗎
可以的,android中使改侍散用布局是為了談知加快開發,最終控制項還是通過解析XML後,通過代碼添加的。
具體方法:
例如你的布局是一個Linearlayout linear;上面有一本Button btn1;
要刪除這個btn1要做的就是 linear.removeView( btn1 );
動態添加也是一樣的:
linear.addView( btn2 );
要注意的是,Button btn2 = new Button( context );這時候控制項是沒有大小的,必須設置控制項大小以後添加了才能看到。設置控制項大核氏小的方法是view.setLayoutParams();
希望能夠幫到你。
② 安卓開發 動態添加布局設置idsetid怎麼用
在線性布局LinearLayout里加入view比較簡單,因為屬性比較少,布局簡單 示例,加入一個TextView LinearLayout layout = (LinearLayout)findViewById(R.id.layout);TextView tv = new TextView(this);tv.setText("hello,world");LayoutParams l
③ 如何在android中後台開啟攝像頭默默拍照
(1)CameraActivity.java
package com.camera.test;import android.app.Activity;import android.content.pm.ActivityInfo;import android.os.Bundle;import android.view.Window;import android.view.WindowManager;import android.widget.RelativeLayout;public class CameraActivity extends Activity {private CameraView view;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);requestWindowFeature(Window.FEATURE_NO_TITLE);// 設置橫屏模式以及全屏模式view = new CameraView(this);// 通過一個surfaceview的view來實現拍照view.setId(1);view = new CameraView(this, this);setContentView(R.layout.camera_layout);RelativeLayout relative = (RelativeLayout) this.findViewById(R.id.ly);RelativeLayout.LayoutParams Layout = new RelativeLayout.LayoutParams(3, 3);// 設置surfaceview使其滿足需求無法觀看預覽Layout.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, 1);Layout.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, 1);relative.addView(view, Layout);}}(2) CameraView.javapackage com.camera.test;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;import android.app.Activity;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Point;import android.graphics.PointF;import android.hardware.Camera;import android.hardware.Camera.AutoFocusCallback;import android.hardware.Camera.ShutterCallback;import android.media.AudioManager;import android.media.FaceDetector;import android.media.FaceDetector.Face;import android.os.Environment;import android.os.Handler;import android.view.SurfaceHolder;import android.view.SurfaceView;import android.widget.Toast;public class CameraView extends SurfaceView implements SurfaceHolder.Callback,Camera.PictureCallback{private SurfaceHolder holder;private Camera camera;private Camera.Parameters parameters;private Activity act;private Handler handler = new Handler();private Context context;private SurfaceView surfaceView;private AudioManager audio;private int current;public CameraView(Context context) {super(context);surfaceView = this;audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);final int current = audio.getRingerMode();audio.setRingerMode(AudioManager.RINGER_MODE_SILENT);this.context = context;holder = getHolder();// 生成Surface Holderholder.addCallback(this);holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);// 指定Push Bufferhandler.postDelayed(new Runnable() {@Overridepublic void run() {if (camera == null) {handler.postDelayed(this, 1 * 1000);// 由於啟動camera需要時間,在此讓其等兩秒再進行聚焦知道camera不為空} else {camera.autoFocus(new AutoFocusCallback() {@Overridepublic void onAutoFocus(boolean success, Camera camera) {if (success) {camera.takePicture(new ShutterCallback() {// 如果聚焦成功則進行拍照@Overridepublic void onShutter() {}}, null, CameraView.this);} else {}}});}}}, 2 * 1000);}public CameraView(Context context, Activity act) {// 在此定義一個構造方法用於拍照過後把CameraActivity給finish掉this(context);this.act = act;}@Overridepublic void surfaceCreated(final SurfaceHolder holder) {// TODO Auto-generated method stubcamera = Camera.open();// 攝像頭的初始化handler.postDelayed(new Runnable() {@Overridepublic void run() {if (holder != null) {try {camera.setPreviewDisplay(holder);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}} else {handler.postDelayed(this, 1 * 1000);}}}, 2 * 1000);}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {// TODO Auto-generated method stubparameters = camera.getParameters();camera.setParameters(parameters);// 設置參數camera.startPreview();// 開始預覽}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {// TODO Auto-generated method stub}public void onPictureTaken(byte[] data, Camera camera) {// 拍攝完成後保存照片try {Date date = new Date();SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");String time = format.format(date);//在SD卡上創建文件夾File file = new File(Environment.getExternalStorageDirectory()+ "/myCamera/pic");if (!file.exists()) {file.mkdirs();}String path = Environment.getExternalStorageDirectory()+ "/myCamera/pic/" + time + ".jpg";data2file(data, path);camera.setPreviewCallback(null);camera.stopPreview();camera.release();camera = null;holder.removeCallback(CameraView.this);audio.setRingerMode(current);act.finish();//uploadFile(path);} catch (Exception e) {}}private void data2file(byte[] w, String fileName) throws Exception {// 將二進制數據轉換為文件的函數FileOutputStream out = null;try {out = new FileOutputStream(fileName);out.write(w);out.close();} catch (Exception e) {if (out != null)out.close();throw e;}}// private void uploadFile(String filePath)// 拍照過後上傳文件到伺服器// {// }}
④ android 中的實體類到底怎麼寫
1.繼承parcelable
package com.somon.selfimpr.entity;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.os.Parcel;
import android.os.Parcelable;
public class DocumentEntity implements Parcelable{
private String id;
private String title;
private String content;
private String userId;
private String projectId;
private String createTime;
private String userName;
private String userFace;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getProjectId() {
return projectId;
}
public void setProjectId(String projectId) {
this.projectId = projectId;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserFace() {
return userFace;
}
public void setUserFace(String userFace) {
this.userFace = userFace;
}
public static List<DocumentEntity> parse(String json){
List<DocumentEntity> entities = new ArrayList<DocumentEntity>();
try {
JSONArray array = new JSONArray(json);
int c = array.length();
for (int i = 0; i < c; i++) {
DocumentEntity entity = new DocumentEntity();
JSONObject o = (JSONObject) array.get(i);
entity.setId(o.getString("id"));
entity.setTitle(o.getString("text_title"));
entity.setContent(o.getString("text_content"));
entity.setUserId(o.getString("user_id"));
entity.setProjectId(o.getString("project_id"));
entity.setCreateTime(o.getString("create_time"));
entity.setUserName(o.getString("name"));
entity.setUserFace(o.getString("user_face"));
entities.add(entity);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return entities;
}
public static final Parcelable.Creator<DocumentEntity> CREATOR = new Creator<DocumentEntity>() {
@Override
public DocumentEntity[] newArray(int size) {
return new DocumentEntity[size];
}
@Override
public DocumentEntity createFromParcel(Parcel source) {
DocumentEntity d = new DocumentEntity();
d.id = source.readString();
d.content=source.readString();
d.createTime=source.readString();
d.projectId=source.readString();
d.title=source.readString();
d.userFace=source.readString();
d.userId=source.readString();
d.userName=source.readString();
return d;
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(id);
dest.writeString(content);
dest.writeString(createTime);
dest.writeString(projectId);
dest.writeString(title);
dest.writeString(userFace);
dest.writeString(userId);
dest.writeString(userName);
}
}
2.簡單的setter getter 方法
3.直接公開成員變數:
package com.ailk.crmui.utils.model;
public class DialogParam {
public String title;
public String content;
public String okText;
public String cancelText;
//TODO 定義好dialog類型
public String type;
}
⑤ 如何對android多媒體資料庫進行增刪改
Android四種存儲方式: sharedpreference,file,sqlite,contentprovider。
1、SharedPreferences是一種輕型的數據存儲方式,它的本質是基於XML文件存儲key-value鍵值對數據,通常用來存儲一些簡單的配置信息。其存儲位置在/data/data/<包名>/shared_prefs目錄下。SharedPreferences對象本身只能獲取數據而不支持存儲和修改,存儲修改是通過Editor對象實現。實現SharedPreferences存儲的步驟如下:
一、根據Context獲取SharedPreferences對象
二、利用edit()方法獲取Editor對象。
三、通過Editor對象存儲key-value鍵值對數據。
四、通過commit()方法提交數據。
具體實現代碼如下:實現存儲,讀取,清除,刪除
效果圖:
首先創建:// 首先拿到sharedpreference對象
mShared =getSharedPreferences(SHARED_MAIN_XML, MODE_PRIVATE);
存儲:
private void write() {// 存入數據
savename = name.getText().toString().trim();
saveage = Integer.valueOf(age.getText().toString().trim());
Editor editor = mShared.edit();
editor.putString("name", savename);
editor.putInt("age", saveage);
// 保證操作的事務完整性
editor.commit();
}
閱讀:
private String read() {// 從資料庫里讀取數據
namecontent = mShared.getString("name", "資料庫里沒有存儲姓名");
agecontent = mShared.getInt("age", 0);
String reading = "姓名:" + namecontent + "\n年齡:" + agecontent;
return reading;
}
清除內容:
private void clear() {//清除內容
/** 開始清除SharedPreferences中保存的內容 **/
Editor editor = mShared.edit();
editor.remove("name");
editor.remove("age");
editor.commit();
}
刪除文件:
private void delete() {//刪除文件
/** 刪除SharedPreferences文件 **/
Filefile = new File("/data/data/cn.csdn.activity" + "/shared_prefs/"
+ SHARED_MAIN_XML + ".xml");
if (file.exists()) {
file.delete();
Toast.makeText(this, "刪除成功", Toast.LENGTH_LONG).show();
}
}
haredPreferences對象與SQLite資料庫相比,免去了創建資料庫,創建表,寫SQL語句等諸多操作,相對而言更加方便,簡潔。但是SharedPreferences也有其自身缺陷,比如其職能存儲boolean,int,float,long和String五種簡單的數據類型,比如其無法進行條件查詢等。所以不論SharedPreferences的數據存儲操作是如何簡單,它也只能是存儲方式的一種補充,而無法完全替代如SQLite資料庫這樣的其他數據存儲方式。
2、File: 即常說的文件(I/O)存儲方法,常用存儲大數量的數據,但是缺點是更新數據將是一件困難的事情。
下面實現:在本地data文件下使用自己生成的文件處理數據的新建儲存 讀取 刪除
如果說不想把內容存在SharedPreferences中的話,我們可以自己寫一個文件保存須要的數據,在這里我將文件保存在系統中的工程路徑下。
跟上面布局一樣,刪除文件也一樣,清除內容也查不多,下面只是簡單的寫和讀的方法:
寫:
17String
nameage="名字:"+name.getText().toString().trim()+"年齡:"+age.getText().toString();
try {
os = this.openFileOutput(SHARED_MAIN_XML, MODE_PRIVATE);
/* 把字元串轉換成位元組數組,寫入文件中 */
os.write(nameage.getBytes());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
/* 關閉文件輸出流 */
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
讀:
private String read() {
String nameage="";
// 打開文件輸入流,
try {
is = this.openFileInput(SHARED_MAIN_XML);
/* 初始化位元組數組 */
b = new byte[1024];
/* 從文件輸入流中讀取內容到位元組數組中,返回內容長度 */
int length = is.read(b);
/* 把位元組數組轉換成字元串 */
nameage= new String(b);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return nameage;
}
很簡單吧!!
3、SQLite是一種轉為嵌入式設備設計的輕型資料庫,其只有五種數據類型,分別是:
NULL: 空值
INTEGER: 整數
REAL: 浮點數
TEXT: 字元串
BLOB: 大數據
它是一個輕量級的資料庫、非常小 、 移植性好、效率高、可靠
在Android系統中提供了android.database.sqlite包,用於進行SQLite資料庫的增、刪、改、查工作。
創建與刪除資料庫
封裝一個類去繼承SQLiteOpenHelper
在構造函數中傳入資料庫名稱與資料庫版本號,資料庫被創建的時候會調用onCreate(SQLiteDatabase db)
方法,資料庫版本號發生改變的時候會調用onUpgrade(SQLiteDatabase db, int oldVersion,
intnewVersion)方法,可以方便的對軟體游戲升級後做出相應處理避免覆蓋安裝資料庫發生改變產生的錯誤。調用SQLiteOpenHelper
的getReadableDatabase()方法去創建資料庫,如果資料庫不存在則創建並且返回SQLiteDatabase對象,如果資料庫存在則不創建只返回SQLiteDatabase對象。調用
deleteDatabase(DATABASE_NAME)方法 傳入資料庫名稱則可刪除資料庫。
第一種:詳細請看上一遍博客:android之利用SQLite資料庫實現登陸和注冊,http://blog.csdn.net/rhljiayou/article/details/7085347
下面介紹第二種:另一種添刪改查操作
效果圖:
布局文件很簡單,在此不再給出!!
直接給創建資料庫和表,增刪改查的代碼:
public class UserService {
private DatabaseHelper helper;
public UserService(Context context, String name, int version) {
helper = new DatabaseHelper(context, name, version);
}
public UserService(Context context, String name) {
helper = new DatabaseHelper(context, name);
}
public void insert(UserDao user) {// 插入數據
SQLiteDatabase sdb = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("username", user.getUsername());
values.put("password", user.getPassword());
sdb.insert("user", "name", values);
sdb.close();
}
public void delete(int id) {// 刪除數據
SQLiteDatabase sdb = helper.getWritableDatabase();
sdb.delete("user", "id=?", new String[]{String.valueOf(id)});
sdb.close();
}
public void update(UserDao user, int id) {// 更新數據
SQLiteDatabase sdb = helper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("username", user.getUsername());
values.put("password", user.getPassword());
sdb.update("user", values, "id=?", new String[]{String.valueOf(id)});
sdb.close();
}
public Cursor select() {// 查詢所有數據
SQLiteDatabase sdb = helper.getWritableDatabase();
return sdb.query("user", new String[]{"id as _id","username","password"},
null, null, null, null, null);
}
public UserDao find(int id){//按id查詢數據
UserDao user=null;
SQLiteDatabase sdb=helper.getWritableDatabase();
Cursor cursor=sdb.query("user", new String[]{"id","username","password"},
"id=?", new String[]{String.valueOf(id)}, null, null, null);
if(cursor.moveToFirst()){
user=new UserDao();
user.setId(cursor.getInt(0));
user.setUsername(cursor.getString(1));
user.setPassword(cursor.getString(2));
}
cursor.close();
sdb.close();
return user;
}
}
插入數據:通過insert(String table, StringnullColumnHack, ContentValues
values)方法插入數據,其中參數含義分別為:
table: 目標表名
nullColumnHack:
指定表中的某列列名。因為在SQLite中,不允許不允許插入所有列均為null的記錄,因此初始值有值為空時,此列需顯式賦予null
values:ContentValues對象,類似於java中的Map。以鍵值對的方式保存數據。
⑥ Android 怎麼連接遠程資料庫
想實現一個功能即讓android訪問遠程資料庫,但是網上很多人都不建議直連。據說問題多多。那麼中間就加個第三者吧。
實現思路:在資料庫和Android客戶端添加一個webservice,處理每次客戶端發來的請求。而在android客戶端使用ksoap2解析webservice返回的數據。
一 webservice 端,我使用序列化的方式實現的。不知道這里跟xml的實現哪個對手機來說更好。這里先放下,以後研究。
1.我使用的是xfire。新建一個webservice項目,然後我們開始寫代碼
2.一個介面
Java代碼
public interface ICompany {
public List<Company> getCompanyList();
}
3一個實現類
Java代碼
public class ICompanyImp implements ICompany {
CompanyDAO com=new CompanyDAO();
//得到所有公司列表
public List<Company> getCompanyList() {
List<Company> list=new ArrayList<Company>();
try {
list=com.getCompanyList();
} catch (SQLException e) {
e.printStackTrace();
list=null;
}
return list;
}
}
注意: 我這里的返回值是list,不少webservice的基本類型,所以需要為它配置文件 介面+.aegis.xml
4 介面+.aegis.xml
Xml代碼
<?xml version="1.0" encoding="UTF-8"?>
<mappings>
<mapping>
<!--
<method name="getCollectionsRowCount">
<parameter index="0" componentType="java.lang.String"/>
</method>
-->
<!-- 返回的類型是Map的話,做法和List一樣。但定義的類型,是Map中的Value部分 -->
<method name="getCompanyList">
<return-type componentType="bean.Company"/>
</method>
</mapping>
</mappings>
5.service.xml
Xml代碼
<?xml version="1.0" encoding="UTF-8"?>
<beans >
<service xmlns="http://xfire.codehaus.org/config/1.0"
xmlns:s="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<name>MyService</name>
<serviceClass>main.service.ICompany</serviceClass>
<implementationClass>main.service.ICompanyImp</implementationClass>
<style mce_bogus="1">wrapped</style>
<use>literal</use>
<scope>application</scope>
<namespace>http://android.googlepages.com/</namespace>
</service>
</beans>
發布項目後,運行效果如圖:
項目結構:
二 android客戶端
因為ksoap2解析webservice得到的數據類似於以下:getCompanyListResponse{out=anyType{Company=anyType{company=安徽江淮汽車股份有限公司; id=1; }; }; }
1 解析類:MyWebServiceHelper
Java代碼
public class MyWebServiceHelper {
// WSDL文檔中的命名空間
private static final String targetNameSpace = "http://android.googlepages.com/";
// WSDL文檔中的URL
private static final String WSDL = "http://192.168.1.144:8080/oilservice/services/MyService";
// 需要調用的方法名(獲得Myervices中的helloWorld方法)
//需要調用的方法名(獲得Myervices中的login方法)
private static final String getCompany="getCompanyList";
public List<Company> getCompanyList( ) {
List<Company> list=new ArrayList<Company>();
SoapObject request =new SoapObject(targetNameSpace,getCompany);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = false;
envelope.setOutputSoapObject(request);
AndroidHttpTransport httpTranstation = new AndroidHttpTransport (WSDL);
try {
httpTranstation.call(targetNameSpace+getCompany, envelope);
SoapObject soapObject = (SoapObject) envelope.getResponse();
//如果獲取的是個集合,就對它進行下面的操作
if(soapObject.getName()=="anyType") {
//遍歷Web Service獲得的集合
for(int i=0;i<soapObject.getPropertyCount();i++){
Company m=new Company();
//獲取單條的數據
SoapObject soapChilds =(SoapObject)soapObject.getProperty(i);
//對單個的數據進行再次遍歷,把它的每行數據讀取出來
m.setId(Integer.parseInt(soapChilds.getProperty("id").toString()));
m.setCompany(soapChilds.getProperty("company").toString());
/*
//獲取實體類的所有屬性
Field[] field = m.getClass().getDeclaredFields();
//遍歷所有屬性,第一個是序列化的id,serialVersionUID,用不到。
for(int j=0 ; j<field.length ; j++){
//獲取屬性的名字
String name = field[j].getName();
System.out.println(name);
}*/
// }
list.add(m);
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
return list;
}
}
2 實現類:
Java代碼
public class OilActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Spinner spinner = (Spinner) findViewById(R.id.company);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this,android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
//調用自已寫的webService
MyWebServiceHelper webServiceHelper=new MyWebServiceHelper();
List<Company> compnayList= webServiceHelper.getCompanyList();
for(int i=0;i<compnayList.size();i++){
adapter.add(compnayList.get(i).getCompany());
}
spinner.setAdapter(adapter);
}
}
3 兩個項目中都用到的bean
Java代碼
public class Company implements Serializable{
private static final long serialVersionUID = 1L;
private int id;
private String company;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
}
最後測試以下,list返回正確。效果圖:
3項目結構:
參考文章:
http://ksoap2.sourceforge.net/doc/api/ ksoap2的API
http://topic.csdn.net/u/20110412/16/0341626d-8576-4dda-b9e4-aab3ff50c980.html 關於list處理的帖子
http://blog.csdn.net/haha_mingg/article/details/6338332,總的思路的實現。在此感謝作者的無私奉獻
android 初學,願與大家相互交流。共同進步。
⑦ Android下如何取當前獲得焦點的控制項的ID
Android如何獲取動態添加控制項的id:
RelativeLayout mainLayout = (RelativeLayout)findViewById(R.id.relaGameZhaiGuoZi);
imgApple2 = new ImageView(this);
imgApple2.setImageResource(R.drawable.app);
imgApple2.setId(110);
imgApple2.setOnClickListener(this);
RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lp1.leftMargin=30;
lp1.topMargin = 100;
碼此mainLayout.addView(imgApple2,lp1);
View類裡面有一個findFocus的成員函數,作用早模梁相當於找到以當前View為根的view層次結構中,獲陸運得當前輸入焦點的view 。
⑧ android TextView.setID(2);這個東西到底起到了什麼作用
...這個方法簡寬李就是你在xml里巧如邊的android:id屬性,這個id是唯一的,攔遲方便你在其它地方能夠快速的找到他,比如用findViewById();
⑨ android一個activity 中 有 N 多 個 按鈕(Button) 怎麼初始化,除了一個一個寫,有什麼快的辦法嗎
弄個int數組,將所有buttonID封裝起哪信簡來,循環初始化, 事件就更不李褲用寫那麼多了,而且SDK1.6支持布局裡直接onclick,你自己多看看,不用給我最佳答案,只是給你個提示,這東西以後你多學自然會了。 我挺佩服你的毅力,以後寫程序記得先多想想在做,畢竟我們是做程序的,怎麼可能每個一樣坦梁的事都去做呢。
⑩ android動態創建的Textview怎麼獲取或者給他設置一個ID
ID本身是個int類型的,就算設置也只能給一個隨機不重復的int數字,但是如果想要通過字元串去實現,用個HashMap把鍵值對存下來
final static HashMap<String, Integer> listView = new HashMap<String, Integer>();
賦值ID linearLayout.setId(唯一id);
鍵值對 listView.put(字元串id, 前邊定義的唯一int ID);
獲取:
public static Integer getViewIdById(String id){
if (listView.containsKey(id))
return listView.get(id);
else
return -1;
}