现在的位置: 首页 > 综合 > 正文

android好看表单界面设计(TableLayout)及查询数据列表显示2

2018年02月16日 ⁄ 综合 ⁄ 共 10418字 ⁄ 字号 评论关闭

之前只是效果展示,这里来展示如何实现功能。

首先这个项目是使用sqlite数据库实现访问进行数据表的增删改查功能,系统内置的sqlite数据库内存很小,只能适用于少量数据,大量数据访问还是借助sqlserver、oracle、mysql等数据库借助websevices来操作将结果返回给client,现在只是来实现单一的对一个表的操作,并没有什么特别的用处,学习学习,练练要不就生疏了,以后远程连接数据库的时候可以修改一下对数据库操作的代码,也有很大用处的。

主界面xml文件代码已分享,现在先写相关实体类和数据库创建、对数据增删改查操作及单元测试插入几条数据便于查询。

我都忘了之前主要界面展示啥样了,贴出来看看吧还是:

 

代码实现我就不介绍了,相信大家也很熟悉了,我是个新手,看看之前代码回顾一下吧,都忘了。如果方便可以看看我写的这个心情日记,挺简单的。

http://blog.csdn.net/luran_fighting/article/details/8176084

 

1.来说下主程序MainActivity.java

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;
	List<Employee> list = new ArrayList<Employee>();

	@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);
		// 点击查询按钮处理事件
		// Toast.makeText(this, "已查询过了!", Toast.LENGTH_SHORT).show();
		select.setOnClickListener(new selectListener());
		// 点击添加按钮事件处理,跳转到另一个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);
			}
		});
	}

	// 查询信息监听类
	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);// 查找所有员工信息
			// 设置行标记
			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);//计算工龄
				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() {//点击某行触发事件
					@Override
					public void onClick(View v) {
						System.out.println("行标记:" + v.getId());
						for (int i = 0; i < table.getChildCount(); i++) {
							if (table.getChildAt(i).getId() != v.getId())
								table.getChildAt(i).setBackgroundColor(Color.WHITE);
								// 选中时,高亮显示即设置背景色
								v.setBackgroundColor(Color.YELLOW);
							}
							selectedRow = v.getId();
							AlertDialog.Builder dialog = new AlertDialog.Builder(
									MainActivity.this);
							dialog.setTitle("请确认:");
							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.然后是添加和更新的界面,两个功能使用同一个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>

3.strings.xml文件

 

4.AddAndUpdateActivity.java

程序可以判定用户是进行添加还是更新,然后进入对应的界面布局和操作。

public class AddAndUpdateActivity extends Activity {
	private TextView t;         private EditText name;
	private EditText age;       private EditText position;
	private EditText dptmt;     private EditText date;
	private Button add;         private EmployeeDao dao;
	private int year;           private int month;
	private int day;            private int DATE_ID = 1;
	private int EMPLOYEE_ID;    private int ACTIVITY_ID;

	// 更新日期
	private void setDate() {
		date.setText(new StringBuilder().append(year).append("-")
				.append((month + 1) < 10 ? "0" + (month + 1) : (month + 1))
				.append("-").append((day < 10) ? "0" + day : day));
	}

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_add);
		t = (TextView) this.findViewById(R.id.t);
		name = (EditText) this.findViewById(R.id.nm);
		age = (EditText) this.findViewById(R.id.ag);
		position = (EditText) this.findViewById(R.id.pzs);
		dptmt = (EditText) this.findViewById(R.id.dptmt);
		date = (EditText) this.findViewById(R.id.wkdt);
		add = (Button) this.findViewById(R.id.addnew);
		dao = new EmployeeDao(this);
		// 创建日历
		final Calendar c = Calendar.getInstance();
		year = c.get(Calendar.YEAR);
		month = c.get(Calendar.MONTH);
		day = c.get(Calendar.DAY_OF_MONTH);
		//确认进入的页面是增加还是更新页面
		Bundle b = this.getIntent().getExtras();
		ACTIVITY_ID = b.getInt("ID");
		switch (ACTIVITY_ID) {
		case 1:
			// 跳转添加页面
			setDate();
			add.setText(R.string.add);// 改变提示文字
			t.setText(R.string.addinfo);
			break;

		default:
			// 更新页面
			EMPLOYEE_ID = b.getInt("emID");// 接收上一页捆绑的数据:员工号
			add.setText(R.string.update);// 改变提示文字
			t.setText(R.string.upinfo);
			Employee em = dao.selectByID(EMPLOYEE_ID);
			name.setText(em.getName());
			age.setText(Integer.toString(em.getAge()));
			position.setText(em.getPosition());
			dptmt.setText(em.getDepartment());
			date.setText(em.getWorkdate());
			break;
		}

		date.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				showDialog(DATE_ID);//显示对话框
			}
		});

		// 添加记录
		add.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				switch (ACTIVITY_ID) {
				case 1:
					// 添加员工信息时,获取员工信息保存
					Employee employee = new Employee();
					employee.setName(name.getText().toString());
					employee.setAge(Integer.parseInt(age.getText().toString()));
					employee.setPosition(position.getText().toString());
					employee.setDepartment(dptmt.getText().toString());
					employee.setWorkdate(date.getText().toString());
					dao.save(employee);
					break;

				case 2:
					// 确认是更新数据时的处理
					Employee emp = new Employee(EMPLOYEE_ID, name.getText()
							.toString(), Integer.parseInt(age.getText()
							.toString()), position.getText().toString(), dptmt
							.getText().toString(), date.getText().toString());
					dao.update(emp);
					break;
				}
				// 跳转主页面
				Intent i = new Intent();
				i.setClass(AddAndUpdateActivity.this, MainActivity.class);
				startActivity(i);
			}
		});
	}

	// 日期对话框监听器,当设置新的日期时保存当前选定日期 ---- 更新日期,否则为初始出现的日期即现在日期
	private DatePickerDialog.OnDateSetListener dateListener = new DatePickerDialog.OnDateSetListener() {
		public void onDateSet(DatePicker view, int nowyear, int monthOfYear,
				int dayOfMonth) {
			year = nowyear;
			month = monthOfYear;
			day = dayOfMonth;
			setDate();//显示用日期控件选择的日期在文本框内
		}

	};

	// 重写创建对话框方法:1-日期 2.可以多个其他对话框
	@Override
	protected Dialog onCreateDialog(int id) {
		switch (id) {
		case 1:
			return new DatePickerDialog(this, dateListener, year, month, day);
		}
		return null;
	}

 

抱歉!评论已关闭.