找不到import android.support.v7.util.DiffUtil;

本文介绍如何在build.gradle文件中正确配置RecyclerView依赖,使用com.android.support库的recyclerview-v7组件,版本为28.0.0。

build.gradle中添加如下:

    implementation 'com.android.support:recyclerview-v7:28.0.0'

 

不修改其他代码的情况下MainAcitvity应该怎么写 实验5 跨程序共享数据 一、实验目的 了解内容提供者使用 掌握内容提供者创建 理解内容提供者操作数据 二、实验设备及实验环境 Windows10 PC机,Android Studio开发环境。 三、实验内容 使用ContentResolver操作Android设备的通讯录中暴露的数据。 四、实验步骤 创建名为Contacts的程序 指定包名 将recyclerview-v7库添加到程序中 放置1个TextView控件 放置1个RecyclerView控件 修改theme属性的值为“@style/Theme.AppCompat.NoActionBar 创建布局文件contact_item.xml 导入界面图片 放置界面控件 创建条目界面的背景文件 创建ContactInfo类 在该类中创建联系人信息的属性 编写列表适配器 五、程序代码 activity_contact.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#eaeaea" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="50dp" android:background="#4889f4" android:gravity="center" android:text="通讯录" android:textColor="@android:color/white" android:textSize="20sp" /> <android.support.v7.widget.RecyclerView android:id="@+id/rv_contact" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="5dp" /> </LinearLayout> contact_item.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:background="@drawable/item_bg" android:orientation="horizontal" android:padding="8dp"> <ImageView android:id="@+id/iv_photo" android:layout_width="60dp" android:layout_height="60dp" android:src="@drawable/contact_photo" /> <LinearLayout android:layout_width="match_parent" android:layout_height="60dp" android:layout_marginLeft="8dp" android:gravity="center_vertical" android:orientation="vertical"> <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@android:color/black" android:textSize="16sp" /> <TextView android:id="@+id/tv_phone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="6dp" android:textColor="@android:color/darker_gray" android:textSize="14sp" /> </LinearLayout> </LinearLayout> ContactActivity.java import android.content.pm.PackageManager; import android.database.Cursor; import android.os.Build; import android.provider.ContactsContract; import android.support.v4.app.ActivityCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class ContactActivity extends AppCompatActivity { private ContactAdapter adapter; private RecyclerView rv_contact; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_contact); init(); } private void setData(){ List<ContactInfo> contactInfos=getContacts(); adapter=new ContactAdapter(ContactActivity.this,contactInfos); rv_contact.setAdapter(adapter); } public List<ContactInfo> getContacts() { List<ContactInfo> contactInfos = new ArrayList<>(); Cursor cursor = getContentResolver().query(ContactsContract. Contacts.CONTENT_URI, null, null, null, null); if (contactInfos!=null)contactInfos.clear();//清除集合中的数据 while (cursor.moveToNext()) { String id = cursor.getString( cursor.getColumnIndex(ContactsContract.Contacts._ID)); String name = cursor.getString (cursor.getColumnIndex(ContactsContract. Contacts.DISPLAY_NAME)); int isHas = Integer.parseInt(cursor.getString(cursor.getColumnIndex( ContactsContract.Contacts.HAS_PHONE_NUMBER))); if (isHas > 0) { Cursor c = getContentResolver().query(ContactsContract. CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + id, null, null); while (c.moveToNext()) { ContactInfo info = new ContactInfo(); info.setContactName(name); String number = c.getString(c.getColumnIndex(ContactsContract. CommonDataKinds.Phone.NUMBER)).trim(); number = number.replace(" ", ""); number = number.replace("-", ""); info.setPhoneNumber(number); contactInfos.add(info); } c.close(); } } cursor.close(); return contactInfos; } private void init(){ rv_contact=findViewById(R.id.rv_contact); rv_contact.setLayoutManager(new LinearLayoutManager(this)); getPermissions(); } String[] permissionList; public void getPermissions() { if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { permissionList = new String[]{"android.permission.READ_CONTACTS"}; ArrayList<String> list = new ArrayList<String>(); // 循环判断所需权限中有哪个尚未被授权 for (int i = 0; i < permissionList.length; i++) { if (ActivityCompat.checkSelfPermission(this, permissionList[i]) != PackageManager.PERMISSION_GRANTED) list.add(permissionList[i]); } if (list.size() > 0) { ActivityCompat.requestPermissions(this, list.toArray(new String[list.size()]), 1); } else { setData();//后续创建该方法 } } else { setData(); //后续创建该方法 } } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == 1) { for (int i = 0; i < permissions.length; i++) { if(permissions[i].equals("android.permission.READ_CONTACTS") && grantResults[i] == PackageManager.PERMISSION_GRANTED){ Toast.makeText(this, "读取通讯录权限申请成功", Toast.LENGTH_SHORT).show(); setData();//后续创建该方法 }else{ Toast.makeText(this,"读取通讯录权限申请失败", Toast.LENGTH_SHORT).show(); } } } } } ContactAdapter.java import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import java.util.List; public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter .MyViewHolder> { private Context mContext; private List<ContactInfo> contactInfoList; public ContactAdapter(Context context, List<ContactInfo> contactInfoList){ this.mContext=context; this.contactInfoList=contactInfoList; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { MyViewHolder holder = new MyViewHolder( LayoutInflater.from(mContext).inflate( R.layout.contact_item, parent, false)); return holder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.tv_name.setText(contactInfoList.get(position).getContactName()); holder.tv_phone.setText(contactInfoList.get(position).getPhoneNumber()); } @Override public int getItemCount() { return contactInfoList.size(); } class MyViewHolder extends RecyclerView.ViewHolder { TextView tv_name,tv_phone; ImageView iv_photo; public MyViewHolder(View view) { super(view); tv_name = view.findViewById(R.id.tv_name); tv_phone = view.findViewById(R.id.tv_phone); iv_photo = view.findViewById(R.id.iv_photo); } } } ContactInfo.java public class ContactInfo { private String contactName; //联系人名称 private String phoneNumber; //电话号码 public String getContactName() { return contactName; } public void setContactName(String contactName) { this.contactName = contactName; } public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } }
最新发布
11-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值