Android–Create a ListView with rounded corners

In a previous post I showed how to create a custom multi-line ListView bound to an ArrayList. Let’s make it a little more visually appealing and give each item some rounded corners.

If you followed the previous how-to you wound up with something that looked like this:

image

To put each ListView item (name, address & phone) into its own rounded-corner box, create a new file in your res/drawable directory called border.xml, and paste in the following code:

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <stroke android:width="1dp" android:color="#FFFFFF" />
    <padding android:left="5dp" android:top="5dp" android:right="5dp" android:bottom="5dp" />
    <corners android:radius="8dp" />
</shape>

Then, specify the background of your LinearLayout in custom_row_view.xml:

android:background="@drawable/border"

And that’s it:

image

Of course, you can mess with colors, padding etc. to get the look you want, and you can apply this to just about any object in your layout.

Technorati Tags:

Accessing all context properties in a custom BizTalk pipeline component

Previously I talked about how to create a custom BizTalk pipeline component, and gave a few examples for accessing specific context properties. I wanted to be able to dump all the context properties to disk for examination, so I added a few lines of code and an on/off switch.

First, add two properties to your component:

private bool _EnableContextTrace;
private string _FileTraceLocation;

public bool EnableContextTrace
{
    get { return _EnableContextTrace; }
    set { _EnableContextTrace = value; }
}

public string FileTraceLocation
{
    get { return _FileTraceLocation; }
    set { _FileTraceLocation = value; }
}

Make sure to add them to the Load() and Save() methods in the IPersistPropertyBag region:

public virtual void Load(Microsoft.BizTalk.Component.Interop.IPropertyBag pb, int errlog)
{
    object val = null;
    val = this.ReadPropertyBag(pb, "EnableContextTrace");
    if ((val != null))
        this._EnableContextTrace = ((bool)(val));
    val = this.ReadPropertyBag(pb, "FileTraceLocation");
    if ((val != null))
        this._FileTraceLocation = ((string)(val));
}

public virtual void Save(Microsoft.BizTalk.Component.Interop.IPropertyBag pb, bool fClearDirty, bool fSaveAllProperties)
{
    this.WritePropertyBag(pb, "EnableContextTrace", this.EnableFileTrace);
    this.WritePropertyBag(pb, "FileTraceLocation", this.FileTraceLocation);
}

And finally add some code to the Execute method to loop through all the context properties and write them to a text file:

if (_EnableContextTrace && _FileTraceLocation.Length > 0)
{
    IBaseMessageContext contextList = inmsg.Context;
    string name;
    string nmspace;
    string contextItems = "";
    for (int x = 0; x < contextList.CountProperties; x++)
    {
        contextList.ReadAt(x, out name, out nmspace);
        string value = contextList.Read(name, nmspace).ToString();
        contextItems += "Name: " + name + " - " + "Namespace: " + nmspace + " - " + value + "\r\n";
    }

    using (StreamWriter outfile = new StreamWriter(_FileTraceLocation + "ContextProperties.txt"))
    {
        outfile.Write(contextItems);
    }
}

After building the DLL and adding it to the Pipeline Components directory, you should be able to configure the properties:

image

Deploy the project, drop and file in, and examine the contents of the ContextProperties.txt file that was created. In my case I ran a HIPAA 837 file through and got the following:

Name: FileCreationTime - Namespace: http://schemas.microsoft.com/BizTalk/2003/file-properties - 2/6/2012 7:41:01 PM
Name: ReceivedFileName - Namespace:
http://schemas.microsoft.com/BizTalk/2003/file-properties - C:\Temp\Split5010Claims\Input\0217_ACS_UIC_837P_OUT_20120203124952.edi
Name: ActivityIdentity - Namespace:
http://schemas.microsoft.com/BizTalk/2003/messagetracking-properties - {BDE71A7F-7351-480E-90A9-3607A92FAE2F}
Name: AdapterReceiveCompleteTime - Namespace:
http://schemas.microsoft.com/BizTalk/2003/messagetracking-properties - 2/6/2012 7:41:01 PM
Name: PortName - Namespace:
http://schemas.microsoft.com/BizTalk/2003/messagetracking-properties - Input5010_P
Name: InboundTransportLocation - Namespace:
http://schemas.microsoft.com/BizTalk/2003/system-properties - C:\Temp\Split5010Claims\Input\*_837P_*.edi
Name: InterchangeID - Namespace:
http://schemas.microsoft.com/BizTalk/2003/system-properties - {E0124062-FF6C-41B1-94F9-BDC929D54FC4}
Name: ReceiveInstanceID - Namespace:
http://schemas.microsoft.com/BizTalk/2003/system-properties - {28D3080A-DE0F-48AC-AB08-C0B61285061F}
Name: ReceiveLocationName - Namespace:
http://schemas.microsoft.com/BizTalk/2003/system-properties - Input5010_P_FILE
Name: ReceivePortID - Namespace:
http://schemas.microsoft.com/BizTalk/2003/system-properties - {C4184808-467F-400F-9681-84924F44E9F4}
Name: ReceivePortName - Namespace:
http://schemas.microsoft.com/BizTalk/2003/system-properties - Input5010_P
Name: AuthenticationRequiredOnReceivePort - Namespace:
http://schemas.microsoft.com/BizTalk/2003/system-properties - False
Name: InboundTransportType - Namespace:
http://schemas.microsoft.com/BizTalk/2003/system-properties - FILE
Name: LRPMsgBodyTracking - Namespace:
http://schemas.microsoft.com/BizTalk/2003/system-properties - 0
Name: MessageExchangePattern - Namespace:
http://schemas.microsoft.com/BizTalk/2003/system-properties - 1
Name: ReceivePipelineID - Namespace:
http://schemas.microsoft.com/BizTalk/2003/system-properties - {45C53C6F-DBE9-49DB-AE7B-58A9D0901730}
Name: ReceivePortAuth - Namespace:
http://schemas.microsoft.com/BizTalk/2003/system-properties - 0
Name: MessageType - Namespace:
http://schemas.microsoft.com/BizTalk/2003/system-properties - http://schemas.microsoft.com/BizTalk/EDI/X12/2006#X12_00501_837_P
Name: SuspendMessageOnRoutingFailure - Namespace: http://schemas.microsoft.com/BizTalk/2003/system-properties - True
Name: ISA05 - Namespace:
http://schemas.microsoft.com/Edi/PropertySchema - 30
Name: ISA06 - Namespace:
http://schemas.microsoft.com/Edi/PropertySchema - 208876513
Name: ISA07 - Namespace:
http://schemas.microsoft.com/Edi/PropertySchema - 30
Name: ISA08 - Namespace:
http://schemas.microsoft.com/Edi/PropertySchema - 205498481UIC5
Name: ISA15 - Namespace:
http://schemas.microsoft.com/Edi/PropertySchema - P
Name: ISA_Segment - Namespace:
http://schemas.microsoft.com/Edi/PropertySchema - ISA*##*##########*##*##########*30*123456789      *30*987654321UIC5  *120203*1249*U*00501*000000064*0*P*:~
Name: GS01 - Namespace:
http://schemas.microsoft.com/Edi/PropertySchema - HC
Name: GS02 - Namespace:
http://schemas.microsoft.com/Edi/PropertySchema - 208876513
Name: GS03 - Namespace:
http://schemas.microsoft.com/Edi/PropertySchema - 205498481UIC5
Name: GS07 - Namespace:
http://schemas.microsoft.com/Edi/PropertySchema - X
Name: GS08 - Namespace:
http://schemas.microsoft.com/Edi/PropertySchema - 005010X222A1
Name: ST01 - Namespace:
http://schemas.microsoft.com/Edi/PropertySchema - 837
Name: GS_Segment - Namespace:
http://schemas.microsoft.com/Edi/PropertySchema - GS*HC*123456789*987654321UIC5*20120203*1249*64*X*005010X222A1~
Name: ReuseEnvelope - Namespace:
http://schemas.microsoft.com/Edi/PropertySchema - False
Name: TsSequenceNumberInGroup - Namespace:
http://schemas.microsoft.com/Edi/PropertySchema - 72
Name: GE01 - Namespace:
http://schemas.microsoft.com/Edi/PropertySchema - 72
Name: AgreementPartIDOnReceive - Namespace:
http://schemas.microsoft.com/Edi/PropertySchema - 0
Name: AgreementID - Namespace:
http://schemas.microsoft.com/Edi/PropertySchema - 0
Name: AgreementName - Namespace:
http://schemas.microsoft.com/Edi/PropertySchema - BTSGuestParty
Name: SenderPartyName - Namespace:
http://schemas.microsoft.com/Edi/PropertySchema - BTS-SENDER
Name: PartyName - Namespace:
http://schemas.microsoft.com/BizTalk/2003/messagetracking-properties - BTSGuestParty
Name: SourcePartyID - Namespace:
http://schemas.microsoft.com/BizTalk/2003/system-properties - s-1-5-7
Name: ReceiverPartyName - Namespace:
http://schemas.microsoft.com/Edi/PropertySchema - RECEIVE-PARTNER

Technorati Tags: