这里根据消息的类型,来决定每一个子项显示哪一种样式。
最后修改活动类的代码,为它初始化数据,并为发送按钮加入响应事件:
public class MainActivity extends AppCompatActivity {
private List<Msg> msgList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
final EditText inputText=(EditText)findViewById(R.id.input);
Button sendBtn=(Button)findViewById(R.id.send);
final RecyclerView msgRecyclerView=(RecyclerView)findViewById(R.id.msg);
LinearLayoutManager layoutManager=new LinearLayoutManager(this);
msgRecyclerView.setLayoutManager(layoutManager);
final MsgAdapter adapter=new MsgAdapter(msgList);
msgRecyclerView.setAdapter(adapter);
sendBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String content=inputText.getText().toString();
if("".equals(content))
return;
msgList.add(new Msg(content, Msg.TYPE.SENT));
//如果有新消息,则设置适配器的长度(通知适配器,有新的数据被插入),并让 RecyclerView 定位到最后一行
int newSize = msgList.size() - 1;
adapter.notifyItemInserted(newSize);
msgRecyclerView.scrollToPosition(newSize);
//清空输入框中的内容
inputText.setText("");
}
});
}
/**
* 初始化消息数据
*/
private void init() {
msgList.add(new Msg("你好", Msg.TYPE.RECEIVED));
msgList.add(new Msg("你好,请问你是?", Msg.TYPE.SENT));
msgList.add(new Msg("我是 deniro,很高兴认识你^_^", Msg.TYPE.RECEIVED));
}
}
运行程序:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-87860-4.html
天天骂
顶顶