Android Open Source - BLEMeshChat Message Adapter






From Project

Back to project page BLEMeshChat.

License

The source code is released under:

GNU General Public License

If you think the Android project BLEMeshChat 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 pro.dbro.ble.ui.adapter;
//w w w.j  a va2 s. c  om
import android.content.Context;
import android.database.Cursor;
import android.support.v7.widget.RecyclerView;
import android.text.format.DateUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.text.ParseException;
import java.util.UUID;

import im.delight.android.identicons.SymmetricIdenticon;
import pro.dbro.ble.ChatApp;
import pro.dbro.ble.R;
import pro.dbro.ble.data.model.DataUtil;
import pro.dbro.ble.data.model.MessageTable;
import pro.dbro.ble.data.model.Peer;

/**
 * Created by davidbrodsky on 10/19/14.
 */
public class MessageAdapter extends RecyclerViewCursorAdapter<MessageAdapter.ViewHolder> {
    public static final String TAG = "MessageAdapter";

    private ChatApp mApp;

    public static class ViewHolder extends RecyclerView.ViewHolder {
        public TextView senderView;
        public TextView messageView;
        public TextView authoredView;
        SymmetricIdenticon mIdenticon;


        public ViewHolder(View v) {
            super(v);
            senderView = (TextView) v.findViewById(R.id.sender);
            messageView = (TextView) v.findViewById(R.id.messageBody);
            authoredView = (TextView) v.findViewById(R.id.authoredDate);
            mIdenticon = (SymmetricIdenticon) v.findViewById(R.id.identicon);

        }
    }

    /**
     * Recommended constructor.
     *
     * @param context       The context
     * @param app
     * @param flags         Flags used to determine the behavior of the adapter;
     *                Currently it accept {@link #FLAG_REGISTER_CONTENT_OBSERVER}.
     */
    public MessageAdapter(Context context, ChatApp app, int flags) {
        super(context, app.getRecentMessagesFeed().getCursor(), flags);
        mApp = app;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, Cursor cursor) {
        // TODO: cache message sender alias to avoid additional query

        Peer peer = mApp.getDataStore().getPeerById(cursor.getInt(cursor.getColumnIndex(MessageTable.peerId)));
        if (peer != null) {
            holder.senderView.setText(peer.getAlias());
            holder.mIdenticon.show(new String(peer.getPublicKey()));
        } else {
            holder.senderView.setText("?");
            holder.mIdenticon.show(UUID.randomUUID());
        }
        holder.messageView.setText(cursor.getString(cursor.getColumnIndex(MessageTable.body)));
        try {
            holder.authoredView.setText(DateUtils.getRelativeTimeSpanString(
                    DataUtil.storedDateFormatter.parse(cursor.getString(cursor.getColumnIndex(MessageTable.authoredDate))).getTime()));
        } catch (ParseException e) {
            holder.authoredView.setText("");
            e.printStackTrace();
        }
    }

    @Override
    protected void onContentChanged() {
        Log.i(TAG, "onContentChanged");
        changeCursor(mApp.getRecentMessagesFeed().getCursor());
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int i) {
        View v = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.message_item, parent, false);
        // set the view's size, margins, paddings and layout parameters
        return new ViewHolder(v);
    }
}




Java Source Code List

im.delight.android.identicons.AsymmetricIdenticon.java
im.delight.android.identicons.Identicon.java
im.delight.android.identicons.SymmetricIdenticon.java
pro.dbro.ble.ActivityRecevingMessagesIndicator.java
pro.dbro.ble.ChatAppTest.java
pro.dbro.ble.ChatApp.java
pro.dbro.ble.ChatService.java
pro.dbro.ble.crypto.KeyPair.java
pro.dbro.ble.crypto.SodiumShaker.java
pro.dbro.ble.data.ContentProviderStore.java
pro.dbro.ble.data.DataStore.java
pro.dbro.ble.data.model.ChatContentProvider.java
pro.dbro.ble.data.model.ChatDatabase.java
pro.dbro.ble.data.model.CursorModel.java
pro.dbro.ble.data.model.DataUtil.java
pro.dbro.ble.data.model.IdentityDeliveryTable.java
pro.dbro.ble.data.model.MessageCollection.java
pro.dbro.ble.data.model.MessageDeliveryTable.java
pro.dbro.ble.data.model.MessageTable.java
pro.dbro.ble.data.model.Message.java
pro.dbro.ble.data.model.PeerTable.java
pro.dbro.ble.data.model.Peer.java
pro.dbro.ble.protocol.BLEProtocol.java
pro.dbro.ble.protocol.IdentityPacket.java
pro.dbro.ble.protocol.MessagePacket.java
pro.dbro.ble.protocol.OwnedIdentityPacket.java
pro.dbro.ble.protocol.Protocol.java
pro.dbro.ble.transport.ConnectionGovernor.java
pro.dbro.ble.transport.ConnectionListener.java
pro.dbro.ble.transport.Transport.java
pro.dbro.ble.transport.ble.BLECentralConnection.java
pro.dbro.ble.transport.ble.BLECentralRequest.java
pro.dbro.ble.transport.ble.BLECentral.java
pro.dbro.ble.transport.ble.BLEPeripheralResponse.java
pro.dbro.ble.transport.ble.BLEPeripheral.java
pro.dbro.ble.transport.ble.BLETransport.java
pro.dbro.ble.transport.ble.BLEUtil.java
pro.dbro.ble.transport.ble.GATT.java
pro.dbro.ble.ui.Notification.java
pro.dbro.ble.ui.activities.LogConsumer.java
pro.dbro.ble.ui.activities.MainActivity.java
pro.dbro.ble.ui.activities.Util.java
pro.dbro.ble.ui.adapter.CursorFilter.java
pro.dbro.ble.ui.adapter.MessageAdapter.java
pro.dbro.ble.ui.adapter.PeerAdapter.java
pro.dbro.ble.ui.adapter.RecyclerViewCursorAdapter.java
pro.dbro.ble.ui.fragment.MessageListFragment.java
pro.dbro.ble.util.RandomString.java