If you think the Android project steamchat listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code
package com.kevelbreh.steamchat.widget.adapter;
/*www.java2s.com*/import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
import android.widget.FrameLayout;
import android.widget.TextView;
import com.kevelbreh.steamchat.R;
import com.kevelbreh.steamchat.provider.SteamProvider;
import com.kevelbreh.steamchat.provider.SteamProvider.Interaction;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Responsible for binding the correct interaction view types to the relevant interaction data type
* {@link com.kevelbreh.steamchat.provider.SteamProvider.Interaction}.
*/publicclass ConversationAdapter extends CursorAdapter {
/**
* Used for inflating our layouts.
*/private LayoutInflater mLayoutInflater;
/**
* Public constructor for our adapter to load data for all the steam interactions found at the
* the given URI.
*
* @param context of the application.
* @param uri to the interactions (.../user/{id}/interactions)
*/public ConversationAdapter(Context context, Uri uri) {
this(context, context.getContentResolver().query(
uri,
null,
null,
null,
null
));
mLayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
/**
* Private constructor to for super class inheritance. Tell the super class to register a
* content observer to monitor our data changes.
*
* @param context of the application.
* @param cursor for accessing our data from
* {@link com.kevelbreh.steamchat.provider.SteamProvider}
*/private ConversationAdapter(Context context, Cursor cursor) {
super(context, cursor, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
}
/**
* Makes a new view to hold the data pointed to by the cursor.
*
* @param context of the application.
* @param cursor containing our the latest interaction data per user.
* @param parent view being a {@link android.widget.ListView}
* @return view to be used for the chat list item.
*/public View newView(Context context, Cursor cursor, ViewGroup parent) {
return mLayoutInflater.inflate(R.layout.chat_simple_house, parent, false);
}
/**
* Bind an existing view to the data pointed to by the cursor.
*
* @param view to mutate.
* @param context of the application.
* @param cursor containing our steam users data.
*/publicvoid bindView(View view, Context context, Cursor cursor) {
FrameLayout house = (FrameLayout) view;
house.removeAllViews();
View inner_view;
finalint type = cursor.getInt(cursor.getColumnIndex(Interaction.LOCAL_FLAG));
if (type == Interaction.FLAG_INCOMING) {
inner_view = mLayoutInflater.inflate(R.layout.chat_simple_incoming, null, false);
}
else {
inner_view = mLayoutInflater.inflate(R.layout.chat_simple_outgoing, null, false);
}
final String message = cursor.getString(cursor.getColumnIndex(Interaction.MESSAGE));
final TextView mMessage = (TextView) inner_view.findViewById(android.R.id.text1);
mMessage.setText(message);
finallong timestamp = cursor.getLong(cursor.getColumnIndex(Interaction.CLIENT_TIMESTAMP));
final TextView mTimestamp = (TextView) inner_view.findViewById(android.R.id.text2);
mTimestamp.setText(new SimpleDateFormat("HH:mm").format(new Date(timestamp)));
house.addView(inner_view);
}
}