我必须创建离线应用程序,并且要在联系人姓名旁边附加个人资料图像,并将的第一个字母作为个人资料图像放置,但是我不知道如何编码。
我已经搜索了,但是什么也没找到。
1。
class Inbox : AppCompatActivity(){
private val requestReceiveSms: Int =1
private val requestReadSms: Int = 2
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.readsms)
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.SEND_SMS) !=
PackageManager.PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(
this, arrayOf(android.Manifest.permission.SEND_SMS,android.Manifest.permission.READ_CONTACTS),
requestReadSms
)
} else {
refreshSmsInbox()
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>,
grantResults: IntArray) {
if(requestCode == requestReadSms) refreshSmsInbox()
}
private fun refreshSmsInbox() {
val smsList = ArrayList<SmsData>()
val cursor = contentResolver.query(Uri.parse("content://sms/inbox"),null,null,null,null)
if(cursor!!.moveToFirst()){
val nameID = cursor.getColumnIndex("address")
val messageID = cursor.getColumnIndex("body")
val dateID = cursor.getColumnIndex("date")
do{
val dateString = cursor.getString(dateID)
smsList.add(SmsData(cursor.getString(nameID),cursor.getString(messageID),Date(dateString.toLong()).toString()))
}while (cursor.moveToNext())
}
cursor.close()
val adapter = ListAdapter(this, smsList)
sms_list_view.adapter = adapter
}
}
XML文件
2。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/sms_list_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="6"
tools:ignore="Suspicious0dp"></ListView>
</LinearLayout>
预期的
个人资料图片以及联系人姓名。
实际结果
只是联系人姓名。
最佳答案
您可以在ListView的项目布局中放置TextView
。现在,我们将此TextView
设置为圆形彩色背景。首先,我们为TextView定义背景drawable
,
profile_background.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<solid android:color="@android:color/holo_blue_bright"/>
</shape>
</item>
</selector>
我们在ListView的项目布局中将此背景设置为
TextView
。listview_item_layout.xml
<TextView
android:id="@+id/profile_text"
android:layout_width="56dp"
android:layout_height="56dp"
android:background="@drawable/sample"
/>
现在,我们需要将
nameId
的第一个字母设置为此TextView
,val firstLetter = nameId.subString( 0 , 1 ).toUpperCase()
profile_text.text = firstLetter