我正在开发一个Android应用程序,我有群聊功能,当我在群聊时发送消息我需要显示消息和时间(在消息结束时需要显示的时间)聊天消息)。
Here is my layout code
<?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:orientation="vertical"
android:paddingBottom="5dp"
android:paddingTop="5dp"
android:paddingLeft="10dp">
<TextView
android:id="@+id/txtInfo"
android:layout_width="wrap_content"
android:layout_height="30sp"
android:layout_gravity="left"
android:textSize="12sp"
android:textColor="@color/lightred"
android:textStyle="italic"
/>
<TextView
android:id="@+id/txtMsg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16dp"
android:layout_marginRight="80dp"
android:background="@color/grey"
android:textColor="@color/white"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:textStyle="italic|bold"
/>
</LinearLayout>
&#34; @ + ID / txtInfo&#34;用于获取当前日期和时间&amp; &#34; @ + ID / txtMsg&#34;用于显示消息。
我的编程代码如下,
public class MessagesListAdapter extends BaseAdapter {
private Context context;
private List<ChatMessageObjects> messagesItems;
public MessagesListAdapter(Context context, List<ChatMessageObjects> navDrawerItems) {
this.context = context;
this.messagesItems = navDrawerItems;
}
@Override
public int getCount() {
return messagesItems.size();
}
@Override
public Object getItem(int position) {
return messagesItems.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
/**
* The following list not implemented reusable list items as list items
* are showing incorrect data Add the solution if you have one
* */
ChatMessageObjects m = messagesItems.get(position);
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (messagesItems.get(position).getMessage_type() == Constants.IS_TYPE_CHAT_IMAGE) {
convertView = mInflater.inflate(R.layout.chat_image,
null);
ImageView imageView = (ImageView) convertView.findViewById(R.id.imgView);
TextView imageLabel = (TextView) convertView.findViewById(R.id.lblImage);
if (messagesItems.get(position).isSelf() == 0) {
Log.i(Constants.TAG, " the value is from others");
try {
URL url = new URL(messagesItems.get(position).getMessage());
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
imageView.setImageBitmap(BitmapFactory.decodeStream(input));
} catch (IOException e) {
Log.i(Constants.TAG, e.toString());
}
} else if (messagesItems.get(position).isSelf() == 1) {
Log.i(Constants.TAG, " the value is itself");
imageView.setImageURI(Uri.fromFile(imgFile));
imageLabel.setText(messagesItems.get(position).getFromName());
}
} else if (messagesItems.get(position).getMessage_type() == Constants.MESSAGE_TYPE_MSG) {
if (messagesItems.get(position).isSelf() == 1) {
// message belongs to you, so load the right aligned layout
convertView = mInflater.inflate(R.layout.chat_message_right,
null);
TextView txtMsg = (TextView) convertView.findViewById(R.id.txtMsg);
//date and time added here
TextView date = (TextView) convertView.findViewById(R.id.txtInfo);
txtMsg.setText(m.getMessage());
lblFrom.setText(m.getFromName());
date.setText(m.getDate());
} else if (messagesItems.get(position).isSelf() == 0) {
// message belongs to other person, load the left aligned layout
convertView = mInflater.inflate(R.layout.chat_message_left,
null);
TextView txtMsg = (TextView) convertView.findViewById(R.id.txtMsg);
//date and time added here
TextView date = (TextView) convertView.findViewById(R.id.txtInfo);
txtMsg.setText(m.getMessage());
lblFrom.setText(m.getFromName());
date.setText(m.getDate());
}
}
return convertView;
}
date.setText(m.getDate());代码以这种格式获取我的日期&#34; 28-aug-2015 11:46:11 pm&#34;。我需要以这种格式转换我的日期&#34; 11:46 pm&#34;如何更改此格式以及如何显示聊天消息以及时间如上所示请帮助我。
答案 0 :(得分:1)
只需更改&#34; 垂直&#34;的 LinearLayout方向到&#34; 水平&#34;。
您可以使用时间来表示小时和分钟,如下所示:
Time today = new Time(Time.getCurrentTimezone());
today.setToNow();
String timeInput = today.hour + ":" + today.minute;
更好的方法是使用SimpleDateFormat:
SimpleDateFormat s = new SimpleDateFormat("HH:mm a");
String msgTime = s.format(new Date());
修改强>:
Time today = new Time(Time.getCurrentTimezone());
today.setToNow();
String msgTime = today.format("HH:mm a")
使用此示例显示格式化的时间。
答案 1 :(得分:1)
可以这样完成日期的格式化:
声明具有所需格式的SimpleDateFormat
对象 -
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
。您可以按照here说明设置格式字符串
然后,您可以获得string
来保留时间 - String myTime = sdf.format(new Date());
并将该字符串添加到您的邮件中。
编辑 -
对于上午12:30 /时的时间格式,您应该使用SimpleDateFormat sdf = new SimpleDateFormat("h:mm a");
。