implementation 'com.google.code.gson:gson:2.2.4' implementation 'com.android.support:recyclerview-v7:27.1.0' implementation 'com.android.support:support-v4:27.1.1' implementation 'org.xutils:xutils:3.3.36' implementation 'com.squareup.picasso:picasso:2.3.2'implementation 'com.android.support:design:27.1.1'
public class MainActivity extends AppCompatActivity { private int count=3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); handler.sendEmptyMessageDelayed(99,1000); } private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (count < 0 ) {// 跳转 startActivity(new Intent(MainActivity.this, Main2Activity.class)); finish(); } else {// 倒计时处理 count--; handler.sendEmptyMessageDelayed(99, 1000); } } }; }public class Main2Activity extends AppCompatActivity { ViewPager viewPager; TabLayout tabLayout; List<String> titles=new ArrayList<>(); List<Fragment> data=new ArrayList<>(); MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); viewPager=findViewById(R.id.viewpager); tabLayout=findViewById(R.id.tablayout); titles.add("一"); titles.add("二"); titles.add("三"); data.add(new diyi()); data.add(new dier()); data.add(new disan()); adapter=new MyAdapter(getSupportFragmentManager()); viewPager.setAdapter(adapter); tabLayout.setupWithViewPager(viewPager); } class MyAdapter extends FragmentPagerAdapter { public MyAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return data.get(position); } @Override public int getCount() { return data.size(); } @Nullable @Override public CharSequence getPageTitle(int position) { return titles.get(position); } } }activity_main2.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".Main2Activity"> <android.support.design.widget.TabLayout android:id="@+id/tablayout" android:background="#c0ffd2" android:layout_width="match_parent" android:layout_height="60dp"> </android.support.design.widget.TabLayout> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="0dp"> </android.support.v4.view.ViewPager> </LinearLayout>public class diyi extends Fragment { private RecyclerView mRecyclerView; private List<ks> list; private Button button; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View inflate = inflater.inflate(R.layout.diyi, container, false); mRecyclerView = inflate.findViewById(R.id.recyclerview); button = inflate.findViewById(R.id.button); try { InputStream open = getActivity().getAssets().open("yy.xml"); List<ks> domxml = domxml(open); mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false)); ReAdapter reAdapter = new ReAdapter(getActivity(), domxml); mRecyclerView.setAdapter(reAdapter); } catch (Exception e) { e.printStackTrace(); } button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String json = new Gson().toJson(list); Toast.makeText(getActivity(), "Json:" + json, Toast.LENGTH_SHORT).show(); saveData(json); } }); return inflate; } private void saveData(String json) { String path = Environment.getExternalStorageDirectory().getAbsolutePath(); String fileName = "my.json"; File file = new File(path + File.separator + fileName); if (!file.exists()) { try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } try { BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file)); bufferedWriter.write(json); bufferedWriter.flush(); bufferedWriter.close(); } catch (Exception e) { e.printStackTrace(); } } public List<ks> domxml(InputStream is) throws Exception { //一系列的初始化 list = new ArrayList<>(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); //获得Document对象 Document document = builder.parse(is); //获得ks的List NodeList kssList = document.getElementsByTagName("ks"); //遍历ks标签 for (int i = 0; i < kssList.getLength(); i++) { //获得ks标签 Node node_ks = kssList.item(i); //获得ks里面的标签 NodeList ksNodes = node_ks.getChildNodes(); //新建ks对象 ks k = new ks(); //遍历ks标签里面的标签 for (int j = 0; j < ksNodes.getLength(); j++) { Node ksNode = ksNodes.item(j); if ("kh".equals(ksNode.getNodeName())) { String kh = ksNode.getTextContent(); k.setKh(kh); } else if ("xm".equals(ksNode.getNodeName())) { String xm = ksNode.getTextContent(); k.setXm(xm); } else if ("jx".equals(ksNode.getNodeName())) { String jx = ksNode.getTextContent(); k.setJx(jx); } else if ("cj".equals(ksNode.getNodeName())) { String cj = ksNode.getTextContent(); k.setCj(cj); } } list.add(k); } return list; } }public class ReAdapter extends RecyclerView.Adapter<ReAdapter.Holder> { private Context context; private List<ks> dybean; public ReAdapter(Context context, List<ks> dybean) { this.context = context; this.dybean = dybean; } @NonNull @Override public Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view= LayoutInflater.from(context).inflate(R.layout.diyi_item,parent,false); Holder holder=new Holder(view); return holder; } @Override public void onBindViewHolder(@NonNull Holder holder, int position) { holder.item_kh.setText(dybean.get(position).getKh()); holder.item_xm.setText(dybean.get(position).getXm()); holder.item_jx.setText(dybean.get(position).getJx()); holder.item_cj.setText(dybean.get(position).getCj()); } @Override public int getItemCount() { return dybean.size(); } class Holder extends RecyclerView.ViewHolder { private TextView item_kh; private TextView item_xm; private TextView item_jx; private TextView item_cj; public Holder(View itemView) { super(itemView); item_kh=itemView.findViewById(R.id.item_kh); item_xm=itemView.findViewById(R.id.item_xm); item_jx=itemView.findViewById(R.id.item_jx); item_cj=itemView.findViewById(R.id.item_cj); } } }
public class dier extends Fragment { private RecyclerView mRecyclerView; private ArrayList<HashMap<String, String>> list; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View inflate=inflater.inflate(R.layout.dier,container,false); mRecyclerView=inflate.findViewById(R.id.recyclerview); list = new ArrayList<HashMap<String, String>>(); // 1.获取内容解析者 ContentResolver resolver = getActivity().getContentResolver(); // 2.获取内容提供者的地址:com.android.contacts // raw_contacts表的地址 :raw_contacts // view_data表的地址 : data // 3.生成查询地址 Uri raw_uri = Uri.parse("content://com.android.contacts/raw_contacts"); Uri date_uri = Uri.parse("content://com.android.contacts/data"); // 4.查询操作,先查询raw_contacts,查询contact_id // projection : 查询的字段 Cursor cursor = resolver.query(raw_uri, new String[] { "contact_id" }, null, null, null); // 5.解析cursor while (cursor.moveToNext()) { // 6.获取查询的数据 String contact_id = cursor.getString(0); // cursor.getString(cursor.getColumnIndex("contact_id"));//getColumnIndex // : 查询字段在cursor中索引值,一般都是用在查询字段比较多的时候 // 判断contact_id是否为空 if (!TextUtils.isEmpty(contact_id)) {//null "" // 7.根据contact_id查询view_data表中的数据 // selection : 查询条件 // selectionArgs :查询条件的参数 // sortOrder : 排序 // 空指针: 1.null.方法 2.参数为null Cursor c = resolver.query(date_uri, new String[] { "data1", "mimetype" }, "raw_contact_id=?", new String[] { contact_id }, null); HashMap<String, String> map = new HashMap<String, String>(); // 8.解析c while (c.moveToNext()) { // 9.获取数据 String data1 = c.getString(0); String mimetype = c.getString(1); // 10.根据类型去判断获取的data1数据并保存 if (mimetype.equals("vnd.android.cursor.item/phone_v2")) { // 电话 map.put("phone", data1); Log.d("bbb",data1); } else if (mimetype.equals("vnd.android.cursor.item/name")) { // 姓名 map.put("name", data1); } } // 11.添加到集合中数据 list.add(map); // 12.关闭cursor c.close(); } } // 12.关闭cursor cursor.close(); mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL,false)); ReAdapter2 reAdapter=new ReAdapter2(getActivity(),list); mRecyclerView.setAdapter(reAdapter); return inflate; } }
public class ReAdapter2 extends RecyclerView.Adapter<ReAdapter2.Holder> { private Context context; private ArrayList<HashMap<String, String>> dybean; public ReAdapter2(Context context, ArrayList<HashMap<String, String>> dybean) { this.context = context; this.dybean = dybean; } @NonNull @Override public Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view= LayoutInflater.from(context).inflate(R.layout.dier_item,parent,false); Holder holder=new Holder(view); return holder; } @Override public void onBindViewHolder(@NonNull Holder holder, int position) { holder.item_xm.setText(dybean.get(position).get("name")); holder.item_sjhm.setText(dybean.get(position).get("phone")); } @Override public int getItemCount() { return dybean.size(); } class Holder extends RecyclerView.ViewHolder { private TextView item_xm; private TextView item_sjhm; public Holder(View itemView) { super(itemView); item_xm=itemView.findViewById(R.id.item_xm); item_sjhm=itemView.findViewById(R.id.item_sjhm); } } }
public class ks { private String kh; private String xm; private String jx; private String cj; public String getKh() { return kh; } public void setKh(String kh) { this.kh = kh; } public String getXm() { return xm; } public void setXm(String xm) { this.xm = xm; } public String getJx() { return jx; } public void setJx(String jx) { this.jx = jx; } public String getCj() { return cj; } public void setCj(String cj) { this.cj = cj; } @Override public String toString() { return "ks{" + "kh='" + kh + '\'' + ", xm='" + xm + '\'' + ", jx='" + jx + '\'' + ", cj='" + cj + '\'' + '}'; } }main---assets---yy.xml
<uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
android获取手机联系人
最新推荐文章于 2024-05-09 02:16:26 发布