核心代码如下:
MainActivity.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;
}
}
}
注意在清单文件中添加 拨号权限:
<uses-permission android:name="android.permission.CALL_PHONE"/>
其他实体类,接口 和实现类,参见上篇博文