读取联系人的界面
package com.example.ap.MainFragment;
import android.Manifest;
import android.content.ContentResolver;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import com.example.ap.R;
import java.util.ArrayList;
import java.util.List;
public class LinkFragment extends Fragment {
public LinkFragment() {
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},202);
}
private ListView viewById;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View inflate = inflater.inflate(R.layout.fragment_link, container, false);
viewById = inflate.findViewById(R.id.link_list);
return viewById;
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if( requestCode==202&&grantResults[0]== PackageManager.PERMISSION_GRANTED){
readLink();
}
}
private void readLink() {
Uri contentUri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
ContentResolver cr = getContext().getContentResolver();
String[] str = {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER};
Cursor query = cr.query(contentUri, str, null, null, null);
ArrayList<String> strings = new ArrayList<>();
if( query!=null){
while (query.moveToNext()) {
String name = query.getString(query.getColumnIndex(str[0]));
String number = query.getString(query.getColumnIndex(str[1]));
strings.add("name:"+name+"\tnumber:"+number);
}
ArrayAdapter aaa = new ArrayAdapter<>(getContext(),R.layout.support_simple_spinner_dropdown_item,strings);
viewById.setAdapter(aaa);
}
}
}
适配器
package com.example.ap.Adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.example.ap.MySqlite.MyNote;
import com.example.ap.R;
import java.util.List;
public class ListAdapter extends BaseAdapter {
private List<MyNote> strings;
private Context con;
public ListAdapter(List<MyNote> strings, Context con) {
this.strings = strings;
this.con = con;
}
public void setStrings(List<MyNote> strings) {
this.strings = strings;
}
public void setCon(Context con) {
this.con = con;
}
@Override
public int getCount() {
return strings.size();
}
@Override
public Object getItem(int position) {
return strings.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
private MyId mi;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if( convertView==null){
mi=new MyId();
convertView= LayoutInflater.from(con).inflate(R.layout.list_layout,null);
mi.text=convertView.findViewById(R.id.list_layout_text);
convertView.setTag(mi);
}else{
mi= (MyId) convertView.getTag();
}
mi.text.setText(strings.get(position).toString());
return convertView;
}
class MyId{
private TextView text;
}
}
引导页
package com.example.ap.GuidePage;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import com.example.ap.R;
public class GuidePageActivity extends AppCompatActivity {
private TextView tv;
private TextView time;
private Handler han=new Handler( ){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
time.setText(msg.obj.toString());
if( msg.arg1==0){
finish();
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guide_page);
tv=findViewById(R.id.guide_text);
time=findViewById(R.id.guide_time);
new MyThread(han).start();
}
}
引导页的倒计时
package com.example.ap.GuidePage;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;
public class MyThread extends Thread{
private Handler han;
public MyThread(Handler han) {
this.han = han;
}
@Override
public void run() {
super.run();
for (int i = 3; i >=0; i--) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Message mess = Message.obtain();
mess.arg1=i;
mess.obj="倒计时:"+i+"s.";
han.sendMessage(mess);
}
}
}
编辑碎片
package com.example.ap.MainFragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.example.ap.Data.MyData;
import com.example.ap.MainActivity;
import com.example.ap.MySqlite.MyHelper;
import com.example.ap.MySqlite.MyNote;
import com.example.ap.MySqlite.MyUtils;
import com.example.ap.R;
import java.util.List;
public class EditFragment extends Fragment {
private MainActivity ma;
public void setMa(MainActivity ma) {
this.ma = ma;
}
public EditFragment() {
}
private Button editFragmentButton;
private EditText editFragmentEditText;
private EditText editFragmentEditTextMessage;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View inflate = inflater.inflate(R.layout.fragment_edit, container, false);
editFragmentButton = (Button) inflate.findViewById(R.id.edit_fragment_button);
editFragmentEditText = (EditText) inflate.findViewById(R.id.edit_fragment_editText);
editFragmentEditTextMessage = (EditText) inflate.findViewById(R.id.edit_fragment_editText_message);
editFragmentButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String title = editFragmentEditText.getText().toString().trim();
String message = editFragmentEditTextMessage.getText().toString().trim();
MyUtils mu = new MyUtils(getContext());
MyNote mn = new MyNote();
mn.setTitle(title);
mn.setMessage(message);
mu.insert(mn);
Toast.makeText(getContext(), "插入完成。", Toast.LENGTH_SHORT).show();
}
});
return inflate;
}
}
查询碎片
package com.example.ap.MainFragment;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;
import com.example.ap.Data.MyData;
import com.example.ap.MainActivity;
import com.example.ap.MySqlite.MyNote;
import com.example.ap.MySqlite.MyUtils;
import com.example.ap.R;
import java.util.ArrayList;
import java.util.List;
public class FindFragment extends Fragment {
private MainActivity ma;
public void setMa(MainActivity ma) {
this.ma = ma;
}
public FindFragment() {
}
private EditText findFragmentEdit;
private Button findFragmentButton;
private ListView findFragmentList;
private List<MyNote> list;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View inflate = inflater.inflate(R.layout.fragment_find, container, false);
findFragmentEdit = (EditText) inflate.findViewById(R.id.find_fragment_edit);
findFragmentButton = (Button) inflate.findViewById(R.id.find_fragment_button);
findFragmentList = (ListView) inflate.findViewById(R.id.find_fragment_list);
list=new ArrayList<>();
findFragmentButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String text = findFragmentEdit.getText().toString().trim();
MyUtils mu = new MyUtils(getContext());
Cursor query = mu.query(text);
if( query==null){
Toast.makeText(getContext(), "没找到。", Toast.LENGTH_SHORT).show();
}else{
while (query.moveToNext()) {
String title = query.getString(query.getColumnIndex("title"));
String message = query.getString(query.getColumnIndex("message"));
MyNote mn = new MyNote();
mn.setTitle(title);
mn.setMessage(message);
list.add(mn);
Toast.makeText(ma, ""+mn.toString(), Toast.LENGTH_SHORT).show();
}
com.example.ap.Adapter.ListAdapter aaa = new com.example.ap.Adapter.ListAdapter(list,getContext());
findFragmentList.setAdapter(aaa);
}
}
});
return inflate;
}
}
查询数据库碎片
package com.example.ap.MainFragment;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import com.example.ap.Adapter.ListAdapter;
import com.example.ap.MainActivity;
import com.example.ap.MySqlite.MyHelper;
import com.example.ap.MySqlite.MyNote;
import com.example.ap.MySqlite.MyUtils;
import com.example.ap.R;
import java.util.ArrayList;
import java.util.List;
public class ListFragment extends Fragment {
private MainActivity ma;
public void setMa(MainActivity ma) {
this.ma = ma;
}
public ListFragment() {
}
private ListView lsit;
private List<MyNote> strings;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View inflate = inflater.inflate(R.layout.fragment_list, container, false);
ListView list=inflate.findViewById(R.id.list_listView);
ListAdapter aaa = new ListAdapter(strings,getContext());
strings = new ArrayList<>();
for (int i = 0; i < 5; i++) {
String title=i+""+i+i;
String message=i+""+i+i+i+i+i+i+i+i+i+i+i+i;
MyNote myNote = new MyNote();
myNote.setMessage(message);
myNote.setTitle(title);
strings.add(myNote);
}
aaa.setStrings(strings);
aaa.setCon(getContext());
ma.getMd().setList(strings);
MyUtils mu = new MyUtils(getContext());
for (int i = 0; i < strings.size(); i++) {
mu.insert(strings.get(i));
}
list.setAdapter(aaa);
return inflate;
}
}
自定义Helper类
package com.example.ap.MySqlite;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MyHelper extends SQLiteOpenHelper {
public MyHelper(Context context,String name,SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table notes(title varchar(20),message varchar(100))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
自定义类
package com.example.ap.MySqlite;
public class MyNote {
private String title;
private String Message;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getMessage() {
return Message;
}
public void setMessage(String message) {
Message = message;
}
@Override
public String toString() {
return "MyNote{" +
"title='" + title + '\'' +
", Message='" + Message + '\'' +
'}';
}
}
自定义工具类
package com.example.ap.MySqlite;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class MyUtils {
private Context con;
private SQLiteDatabase db;
public MyUtils(Context con) {
this.con = con;
MyHelper myHelper = new MyHelper(con,"notes.db",null, 1);
db=myHelper.getReadableDatabase();
}
public MyUtils() {
}
public void insert(MyNote mn){
db.execSQL("insert into notes values(?,?)",new Object[]{mn.getTitle(),mn.getMessage()});
}
public void delete( String str){
db.execSQL("delete from notes where title=?",new Object[]{str});
}
public void update( String[] str){
db.execSQL("update notes set message=? where title=?",new Object[]{str[0],str[1]});
}
public Cursor query(String str){
Cursor cursor = db.rawQuery("select * from notes where message like ?", new String[]{"%" + str + "%"});
return cursor;
}
}
主界面
package com.example.ap;
import android.content.Intent;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import com.example.ap.Data.MyData;
import com.example.ap.GuidePage.GuidePageActivity;
import com.example.ap.MainFragment.EditFragment;
import com.example.ap.MainFragment.FindFragment;
import com.example.ap.MainFragment.LinkFragment;
import com.example.ap.MainFragment.ListFragment;
public class MainActivity extends AppCompatActivity {
private RelativeLayout mainRelaLayout;
private LinearLayout mainLinearLayout;
private Button mainButtonList;
private Button mainButtonFind;
private Button mainButtonEdit;
private Button mainButtonLink;
private ListFragment listFragment=new ListFragment();
private FindFragment findFragment=new FindFragment();
private FragmentManager gsf;
private EditFragment editFragment=new EditFragment();
private LinkFragment linkFragment=new LinkFragment();
private MyData md;
public MyData getMd() {
return md;
}
public void setMd(MyData md) {
this.md = md;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
md=new MyData();
findFragment.setMa(this);
mainRelaLayout = (RelativeLayout) findViewById(R.id.main_relaLayout);
mainLinearLayout = (LinearLayout) findViewById(R.id.main_linearLayout);
mainButtonList = (Button) findViewById(R.id.main_button_list);
mainButtonFind = (Button) findViewById(R.id.main_button_find);
mainButtonEdit = (Button) findViewById(R.id.main_button_edit);
mainButtonLink = (Button) findViewById(R.id.main_button_link);
gsf = getSupportFragmentManager();
FragmentTransaction ft = gsf.beginTransaction();
listFragment = new ListFragment();
listFragment.setMa(this);
ft.add(R.id.main_relaLayout,listFragment);
ft.commit();
}
public void click(View view) {
switch (view.getId()) {
case R.id.main_button_list:
FragmentTransaction fts = gsf.beginTransaction();
listFragment.setMa(this);
fts.replace(R.id.main_relaLayout,listFragment).commit();
break;
case R.id.main_button_find:
FragmentTransaction fts2 = gsf.beginTransaction();
fts2.replace(R.id.main_relaLayout,findFragment).commit();
break;
case R.id.main_button_edit:
FragmentTransaction fts3 = gsf.beginTransaction();
fts3.replace(R.id.main_relaLayout,editFragment).commit();
break;
case R.id.main_button_link:
FragmentTransaction fts4 = gsf.beginTransaction();
fts4.replace(R.id.main_relaLayout,linkFragment).commit();
break;
}
}
}