核心代碼如下:
MainActivity.java
[java]
package com.example.lession05_dbs;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.lession05_dbs.dao.PersonDao;
import com.example.lession05_dbs.dao.PersonDaoImpl;
import com.example.lession05_dbs.domain.Person;
public class MainActivity extends Activity {
//listView控制項
public ListView listView;
//顯示所有的使用者資訊
public List<Person> persons;
//資料庫操作的對象
public PersonDao personDao ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//執行個體化資料庫操作對象
personDao = new PersonDaoImpl(MainActivity.this);
//執行查詢資料
persons = personDao.findAll();
//根據id擷取控制項對象
listView = (ListView) findViewById(R.id.lv_persons);
//設定顯示的資料 Adpater
listView.setAdapter(new PersonListAdapter());
//listView註冊事件
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
/**
* parent :listView
* view 每個條目控制項
* position:條目所在的位置
* id:行號 0
*/
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
TextView tv = (TextView) view;
// Toast.makeText(getApplicationContext(), tv.getText().toString(),Toast.LENGTH_LONG).show();
//擷取控制項的文本
/* String text = tv.getText().toString();
//拆分
String arr[] = text.split("-");
//得到電話
String phone = arr[1];
//意圖
Intent intent = new Intent();
//設定動作
intent.setAction(Intent.ACTION_CALL);
//設定資料
intent.setData(Uri.parse("tel:"+phone));
//執行意圖
startActivity(intent);*/
//parent listView
Person p = (Person) parent.getItemAtPosition(position); //傳回值 實際就是getItem返回的值
/* //意圖
Intent intent = new Intent();
//設定動作
intent.setAction(Intent.ACTION_CALL);
//設定資料
intent.setData(Uri.parse("tel:"+p.getPhone()));
//執行意圖
startActivity(intent);
*/
// Toast.makeText(getApplicationContext(), p.getName(), Toast.LENGTH_LONG).show();
int lid = (int) parent.getItemIdAtPosition(position);
//
Toast.makeText(getApplicationContext(), lid+"", Toast.LENGTH_LONG).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
class PersonListAdapter extends BaseAdapter{
//告訴你有多少個條目
@Override
public int getCount() {
// TODO Auto-generated method stub
return persons.size();
}
//返回這個為控制項對應的資料
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return persons.get(position);
}
//返回條目所在的位置
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//建立一個顯示的控制項 每個條目對應的控制項
TextView tv = new TextView(MainActivity.this);
tv.setText(persons.get(position).getName()+"-"+persons.get(position).getPhone());
return tv;
}
}
}
package com.example.lession05_dbs;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.lession05_dbs.dao.PersonDao;
import com.example.lession05_dbs.dao.PersonDaoImpl;
import com.example.lession05_dbs.domain.Person;
public class MainActivity extends Activity {
//listView控制項
public ListView listView;
//顯示所有的使用者資訊
public List<Person> persons;
//資料庫操作的對象
public PersonDao personDao ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//執行個體化資料庫操作對象
personDao = new PersonDaoImpl(MainActivity.this);
//執行查詢資料
persons = personDao.findAll();
//根據id擷取控制項對象
listView = (ListView) findViewById(R.id.lv_persons);
//設定顯示的資料 Adpater
listView.setAdapter(new PersonListAdapter());
//listView註冊事件
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
/**
* parent :listView
* view 每個條目控制項
* position:條目所在的位置
* id:行號 0
*/
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
TextView tv = (TextView) view;
// Toast.makeText(getApplicationContext(), tv.getText().toString(),Toast.LENGTH_LONG).show();
//擷取控制項的文本
/* String text = tv.getText().toString();
//拆分
String arr[] = text.split("-");
//得到電話
String phone = arr[1];
//意圖
Intent intent = new Intent();
//設定動作
intent.setAction(Intent.ACTION_CALL);
//設定資料
intent.setData(Uri.parse("tel:"+phone));
//執行意圖
startActivity(intent);*/
//parent listView
Person p = (Person) parent.getItemAtPosition(position); //傳回值 實際就是getItem返回的值
/* //意圖
Intent intent = new Intent();
//設定動作
intent.setAction(Intent.ACTION_CALL);
//設定資料
intent.setData(Uri.parse("tel:"+p.getPhone()));
//執行意圖
startActivity(intent);
*/
// Toast.makeText(getApplicationContext(), p.getName(), Toast.LENGTH_LONG).show();
int lid = (int) parent.getItemIdAtPosition(position);
//
Toast.makeText(getApplicationContext(), lid+"", Toast.LENGTH_LONG).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
class PersonListAdapter extends BaseAdapter{
//告訴你有多少個條目
@Override
public int getCount() {
// TODO Auto-generated method stub
return persons.size();
}
//返回這個為控制項對應的資料
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return persons.get(position);
}
//返回條目所在的位置
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//建立一個顯示的控制項 每個條目對應的控制項
TextView tv = new TextView(MainActivity.this);
tv.setText(persons.get(position).getName()+"-"+persons.get(position).getPhone());
return tv;
}
}
}
注意在資訊清單檔中添加 撥號許可權:
<uses-permission android:name="android.permission.CALL_PHONE"/>
其他實體類,介面 和實作類別,參見上篇博文