1.來(lái)說下主程序MainActivity.java
企業(yè)建站必須是能夠以充分展現(xiàn)企業(yè)形象為主要目的,是企業(yè)文化與產(chǎn)品對(duì)外擴(kuò)展宣傳的重要窗口,一個(gè)合格的網(wǎng)站不僅僅能為公司帶來(lái)巨大的互聯(lián)網(wǎng)上的收集和信息發(fā)布平臺(tái),成都創(chuàng)新互聯(lián)面向各種領(lǐng)域:成都加固等網(wǎng)站設(shè)計(jì)、成都營(yíng)銷網(wǎng)站建設(shè)解決方案、網(wǎng)站設(shè)計(jì)等建站排名服務(wù)。
public class MainActivity extends Activity {
private TableLayout table;
private Button select;
EmployeeDao dao = new EmployeeDao(this);
private Button add;
private Button update;
int selectedRow = 0;
int ActivityID=1;
ListEmployee list = new ArrayListEmployee();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
table = (TableLayout) this.findViewById(R.id.table);
table.setBackgroundColor(Color.GREEN);
//table.set
add = (Button) this.findViewById(R.id.add);
update = (Button) this.findViewById(R.id.update);
select = (Button) this.findViewById(R.id.select);
// 點(diǎn)擊查詢按鈕處理事件
// Toast.makeText(this, "已查詢過了!", Toast.LENGTH_SHORT).show();
select.setOnClickListener(new selectListener());
// 點(diǎn)擊添加按鈕事件處理,跳轉(zhuǎn)到另一個(gè)activity
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent();
i.setClass(MainActivity.this, AddAndUpdateActivity.class);
Bundle bundle=new Bundle();
ActivityID=1;
bundle.putInt("ID", ActivityID);
i.putExtras(bundle);
startActivity(i);
}
});
// 更新員工信息
update.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent();
i.setClass(MainActivity.this, AddAndUpdateActivity.class);
Bundle bundle=new Bundle();
ActivityID=2;
bundle.putInt("ID", ActivityID);
bundle.putInt("emID", selectedRow);
i.putExtras(bundle);
startActivity(i);
}
});
}
// 查詢信息監(jiān)聽類
private class selectListener implements View.OnClickListener {
@Override
public void onClick(View v) {
list = dao.getAll();
if (list.size() != 0) {
for (int i = 0; i list.size(); i++) {
TableRow row = new TableRow(MainActivity.this);
Employee em = list.get(i);// 查找所有員工信息
// 設(shè)置行標(biāo)記
row.setId(em.getId());
row.setPadding(6, 1, 6, 1);
row.setGravity(Gravity.CENTER);
row.setBackgroundColor(Color.WHITE);
TextView view1 = new TextView(MainActivity.this);
view1.setText(Integer.toString(em.getId()));
view1.setGravity(Gravity.CENTER);//文本居中
view1.setTextSize((float) 18);文本大小
view1.setTextColor(Color.RED);
view1.setPadding(10, 2, 10, 2);//邊框左、上、右、下
row.addView(view1);添加一行
TextView view2 = new TextView(MainActivity.this);
view2.setText(em.getName());
view2.setTextSize((float) 18);
view2.setPadding(10, 2, 10, 2);
row.addView(view2);
TextView view3 = new TextView(MainActivity.this);
view3.setText(Integer.toString(em.getAge()));
view3.setTextSize((float) 18);
view3.setGravity(Gravity.CENTER);
view3.setPadding(10, 2, 10, 2);
row.addView(view3);
TextView view4 = new TextView(MainActivity.this);
view4.setText(em.getPosition());
view4.setTextSize((float) 18);
view4.setPadding(10, 2, 10, 2);
row.addView(view4);
TextView view5 = new TextView(MainActivity.this);
view5.setText(em.getDepartment());
view5.setTextSize((float) 18);
view5.setPadding(10, 2, 10, 2);
row.addView(view5);
TextView view6 = new TextView(MainActivity.this);
view6.setText(em.getWorkdate());
view6.setTextSize((float) 18);
view6.setPadding(10, 2, 10, 2);
row.addView(view6);
TextView view7 = new TextView(MainActivity.this);
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = format.parse(em.getWorkdate());
} catch (ParseException e) {
e.printStackTrace();
}
float d= (float)((new Date().getTime()-date.getTime())/(24*60*60*1000)/365);//計(jì)算工齡
String dd=Integer.toString((int) d+1);
view7.setText(dd);
view7.setTextSize((float) 18);
view7.setPadding(10, 2, 10, 2);
row.addView(view7);
table.addView(row);
row.setOnClickListener(new View.OnClickListener() {//點(diǎn)擊某行觸發(fā)事件
@Override
public void onClick(View v) {
System.out.println("行標(biāo)記:" + v.getId());
for (int i = 0; i table.getChildCount(); i++) {
if (table.getChildAt(i).getId() != v.getId())
table.getChildAt(i).setBackgroundColor(Color.WHITE);
// 選中時(shí),高亮顯示即設(shè)置背景色
v.setBackgroundColor(Color.YELLOW);
}
selectedRow = v.getId();
AlertDialog.Builder dialog = new AlertDialog.Builder(
MainActivity.this);
dialog.setTitle("請(qǐng)確認(rèn):");
dialog.setMessage("是否刪除這條記錄?");
dialog.setPositiveButton("確定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(
DialogInterface dialog,int which) {
EmployeeDao dao = new EmployeeDao(MainActivity.this);
dao.delete(selectedRow);
Toast.makeText(MainActivity.this,
"刪除成功", Toast.LENGTH_SHORT).show();
Intent i = new Intent();
i.setClass(MainActivity.this,MainActivity.class);
startActivity(i);
}
});
dialog.setNegativeButton("取消",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.cancel();
} });
dialog.show();
}
});
}
}
}
}
}
2.然后是添加和更新的界面,兩個(gè)功能使用同一個(gè)xml文件布局
RelativeLayout
android:background="#2691f2"
tools:context=".AddAndUpdateActivity"
TextView
android:id="@+id/t"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:textSize="25sp"
android:text="@string/addinfo"
android:textColor="#bc4b86" /
LinearLayout
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_below="@+id/t"
android:orientation="vertical"
TextView
android:layout_width="wrap_content"
android:layout_height="30dp" /
LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/name" /
EditText
android:id="@+id/nm"
android:inputType="text"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginLeft="25dp" /
/LinearLayout
LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/age" /
EditText
android:id="@+id/ag"
android:inputType="text"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginLeft="25dp" /
/LinearLayout
LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/position" /
EditText
android:id="@+id/pzs"
android:inputType="text"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginLeft="25dp" /
/LinearLayout
LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/dptmt" /
EditText
android:id="@+id/dptmt"
android:inputType="text"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginLeft="25dp" /
/LinearLayout
LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/date" /
EditText
android:id="@+id/wkdt"
android:inputType="text"
android:layout_width="150dp"
android:layout_height="wrap_content" /
/LinearLayout
TextView
android:layout_width="wrap_content"
android:layout_height="20dp" /
Button
android:id="@+id/addnew"
android:layout_width="60dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:text="@string/add"
/Button
/LinearLayout
/RelativeLayout
我沒有做過類似的開發(fā),不過那個(gè)文本框應(yīng)該是一個(gè)類吧,這樣的話里面應(yīng)該有相應(yīng)的方法對(duì)回車進(jìn)行響應(yīng),重寫這個(gè)方法就好了
希望能幫到你
我也是搞手機(jī)交互開發(fā)的,一般手機(jī)端POST數(shù)據(jù)到服務(wù)器端(如:PHP),然后由服務(wù)器端處理數(shù)據(jù)存入數(shù)據(jù)庫(kù)。
就想當(dāng)HTML頁(yè)面提交數(shù)據(jù)到PHP然后存入數(shù)據(jù)庫(kù)是一樣的道理。
android、iPhone等都一樣道理。
1、在android中找到后臺(tái)接口//userController.java,前端接收一個(gè)usersReportd對(duì)象。
2、舉報(bào)頁(yè)面包含一個(gè)form表單,其中有一個(gè)picker組件用于選擇舉報(bào)的原因,一個(gè)textarea組件用于輸入用戶舉報(bào)描述,一個(gè)submitReport方法提交表單信息即可舉報(bào)賬號(hào)。
1.服務(wù)器端的準(zhǔn)備
為了完成該實(shí)例,我們需要在服務(wù)器端做以下準(zhǔn)備工作:
(1)我們需要在MyEclipse中創(chuàng)建一個(gè)Web工程,用來(lái)模擬服務(wù)器端的Web服務(wù),這里,我將該工程命名為了“myhttp”。
(2)修改該工程的“index.jsp”文件,添加兩個(gè)輸入框和一個(gè)提交按鈕,作為該Web工程的顯示頁(yè)面。運(yùn)行Tomcat,在瀏覽器中訪問該Web工程,可以看到如圖1所示的界面。
Web工程的顯示頁(yè)面
(3)在該Web工程中,創(chuàng)建一個(gè)繼承自HttpServlet的LoginAction類,并實(shí)現(xiàn)其中的doPost()方法,用來(lái)響應(yīng)圖1所示頁(yè)面的用戶操作。具體實(shí)現(xiàn)如下:
由上述代碼可以看出,當(dāng)我們?cè)趫D1所示的頁(yè)面輸入用戶名“admin”,密碼“123”時(shí),點(diǎn)擊提交按鈕,會(huì)得到“Login succeeded!”的提示信息,如圖2所示。若用戶名、密碼錯(cuò)誤,則會(huì)得到“Login failed!”的提示信息。
2.客戶端實(shí)現(xiàn)
在Android客戶端,我們需要完成的工作是:以POST方式發(fā)送用戶名密碼到上述服務(wù)器,并獲得服務(wù)器的驗(yàn)證信息。
我們分以下幾個(gè)步驟來(lái)完成。
2.1 UI界面
在Android工程中,我們需要完成一個(gè)簡(jiǎn)單的UI界面,用來(lái)完成用戶名密碼的輸入、發(fā)送POST請(qǐng)求、顯示服務(wù)器的驗(yàn)證結(jié)果,完成后的界面如圖3所示。
在MainActivity中,我們需要獲取兩個(gè)EditText控件的輸入,“提交”按鍵的監(jiān)聽,以及服務(wù)器驗(yàn)證結(jié)果的TextView內(nèi)容顯示。具體實(shí)現(xiàn)代碼如下:
2.2發(fā)送POST請(qǐng)求到服務(wù)器
可以看到上述代碼中,我們調(diào)用了HttpUtils類的靜態(tài)方法submitPostData()完成了發(fā)送POST請(qǐng)求到服務(wù)器,并將該方法的返回值(服務(wù)器的響應(yīng)結(jié)果)顯示在了TextView控件中。
通過以上的代碼可以看出,在該方法中,其實(shí)完成了3件事:
(1)將用戶名密碼封裝成請(qǐng)求體,這是通過調(diào)用getRequestData()方法來(lái)實(shí)現(xiàn)的(后面會(huì)講到這個(gè)方法的具體實(shí)現(xiàn))。
(2)設(shè)置HttpURLConnection對(duì)象的各種參數(shù)(其實(shí)是設(shè)置HTTP協(xié)議請(qǐng)求體的各項(xiàng)參數(shù)),然后通過httpURLConnection.getOutputStream()方法獲得服務(wù)器輸出流outputStream,再使用outputStream.write()方法將請(qǐng)求體內(nèi)容發(fā)送給服務(wù)器。
(3)判斷服務(wù)器的響應(yīng)碼,通過httpURLConnection.getInputStream()方法獲得服務(wù)器的響應(yīng)輸入流,然后再調(diào)用dealResponseResult()方法處理服務(wù)器的響應(yīng)結(jié)果。
2.3封裝請(qǐng)求體
使用POST請(qǐng)求時(shí),POST的參數(shù)不是放在URL字符串里,而是放在HTTP請(qǐng)求數(shù)據(jù)中,所以我們需要對(duì)POST的參數(shù)進(jìn)行封裝。
針對(duì)該實(shí)例而言,我們發(fā)送的URL請(qǐng)求是:,但是我們需要將POST的參數(shù)(也就是username和password)封裝到該請(qǐng)求中,形成如下的形式:
2.4處理響應(yīng)結(jié)果
最后,我們?cè)賮?lái)看一看對(duì)服務(wù)器返回結(jié)果的處理是怎樣的。因?yàn)樵诒緦?shí)例中,服務(wù)器的返回結(jié)果是字符串“Login succeeded!”或“Login failed!”,所以這里我們需要做的就是將服務(wù)器的返回結(jié)果輸入流轉(zhuǎn)化成字符串。當(dāng)然了,如果服務(wù)器返回的是圖片,那么,我們就需要就得到的輸入流轉(zhuǎn)化成Bitmap圖片了。如下代碼是上面代碼中用到的dealResponseResult()方法的具體實(shí)現(xiàn)。
2.5運(yùn)行效果
你是做web開發(fā)的吧?
問題要發(fā)到 電腦/網(wǎng)絡(luò)—軟件開發(fā)—移動(dòng)開發(fā)下比較準(zhǔn)確。
android上是沒有form表單的概念的,通常用listView列表來(lái)顯示。
前幾天給別人寫了一個(gè)這樣的demo,如果有需要,可以留下郵箱發(fā)給你
本文名稱:android表單,android表單框架
文章起源:http://jinyejixie.com/article4/dsdggie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、微信小程序、網(wǎng)站內(nèi)鏈、網(wǎng)站維護(hù)、軟件開發(fā)、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)