适配器代码
package com.example.uilayout.adapter;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.uilayout.R;
import com.example.uilayout.model.Msg;
import java.util.List;
/**
* Created by 夏雨来 on 2018/11/20.
*/
public class MsgListAdapter extends RecyclerView.Adapter<MsgListAdapter.viewHolder> {
private List<Msg> msgList;
//1、创建构造函数
//构造函数参数是list的集合,他是rv直接的数据来源
//在做Adapter实例化的时候必须传入list的集合数据
public MsgListAdapter(List<Msg> msgList) {
this.msgList = msgList;
}
//2、创建类ViewHolder(视图容器),承载的是条目中的控件
//做条目中控件的声明和绑定
class viewHolder extends RecyclerView.ViewHolder{
ImageView iv_head;
TextView tv_friend;
TextView tv_message;
TextView tv_time;
View itemView;
public viewHolder(View itemView) {
super(itemView);
//itemView的值由一步一步传递过来的
this.itemView=itemView;
iv_head=itemView.findViewById(R.id.iv_head);
tv_friend=itemView.findViewById(R.id.tv_friend);
tv_message=itemView.findViewById(R.id.tv_message);
tv_time=itemView.findViewById(R.id.tv_time);
}
}
//创建ViewHolder对象
//
@Override
public viewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View itemView = View.inflate(viewGroup.getContext(),R.layout.item_msglist,null);
viewHolder holder=new viewHolder(itemView);
return holder;
}
//给ViewHolder中的控件设置数据
@Override
public void onBindViewHolder(final viewHolder viewHolder, final int i) {
final Msg msg = msgList.get(i);
viewHolder.iv_head.setImageResource(msg.getImage_head());
viewHolder.tv_friend.setText(msg.getFriend());
viewHolder.tv_message.setText(msg.getMessage());
viewHolder.tv_time.setText(msg.getTime());
//设置条目中的点击监听
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(), "你想与" + msg.getFriend() + "聊天", Toast.LENGTH_SHORT).show();
// TextView friendView=view.findViewById(R.id.tv_friend);
// Intent intent=new Intent();
// Intent intent=new Intent(mContext,ChatActivity.class);
// intent.putExtra("friend",msg.getFriend().toString());
// mContext.startActivity(intent);
}
});
//设置条目中具体控件的点击监听
// viewHolder.iv_head.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
// Toast.makeText(view.getContext(), "你点击了"+msg.getFriend()+"头像", Toast.LENGTH_SHORT).show();
// }
// });
}
@Override
public int getItemCount() {
return msgList.size();
}
}
Activity代码
package com.example.uilayout.activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import com.example.uilayout.model.Msg;
import com.example.uilayout.adapter.MsgListAdapter;
import com.example.uilayout.R;
import com.example.uilayout.utils.MySQLiteOpenHelper;
import java.util.ArrayList;
import java.util.List;
public class MsgListActivity extends AppCompatActivity {
RecyclerView rv;
List<Msg> msgList = new ArrayList<>();
// TextView friend;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_msglist);
rv = findViewById(R.id.rv);
// friend =findViewById(R.id.tv_friend);
//给rv设置线性布局
rv.setLayoutManager(new LinearLayoutManager(this));
//初始化List集合数据
// initList(msgList);
initListFromDB();
//给rv设置适配器
rv.setAdapter(new MsgListAdapter(msgList));
// MySQLiteOpenHelper helper=new MySQLiteOpenHelper(this,"wechat",null,1);
// SQLiteDatabase db=helper.getWritableDatabase();
}
public void initListFromDB() {
MySQLiteOpenHelper helper = new MySQLiteOpenHelper(this, "wechat", null, 1);
SQLiteDatabase db = helper.getWritableDatabase();
Cursor cursor = db.query("msg", null, null, null, null, null, null);
while (cursor.moveToNext()) {
int headImageSrc = cursor.getInt(cursor.getColumnIndex("headImageSrc"));
String friend = cursor.getString(cursor.getColumnIndex("friend"));
String message = cursor.getString(cursor.getColumnIndex("message"));
String time = cursor.getString(cursor.getColumnIndex("time"));
Msg msg = new Msg(headImageSrc, friend, message, time);
msgList.add(msg);
}
}
}
布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:descendantFocusability="blocksDescendants"
>
<ImageView
android:id="@+id/iv_head"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@drawable/a"
android:layout_marginTop="5dp"
android:layout_marginLeft="10dp"
android:onClick="click"
/>
<TextView
android:id="@+id/tv_friend"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="小张"
android:textSize="20sp"
android:textColor="#000"
android:layout_toRightOf="@+id/iv_head"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:onClick="click"
/>
<TextView
android:id="@+id/tv_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="你在干嘛"
android:textSize="15sp"
android:lines="1"
android:layout_alignLeft="@+id/tv_friend"
android:layout_marginTop="40dp"
android:onClick="click"
/>
<TextView
android:id="@+id/tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="21:00"
android:textSize="15sp"
android:layout_alignTop="@+id/tv_friend"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"
android:onClick="click"
/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#C0C0C0"
android:layout_alignLeft="@+id/iv_head"
android:layout_alignRight="@+id/tv_time"
android:layout_marginTop="74dp"
/>
</RelativeLayout>