Welcome!

Welcome to the official BlackBerry Support Community Forums.

This is your resource to discuss support topics with your peers, and learn from each other.

inside custom component

Java Development

Reply
Regular Contributor
Posts: 63
Registered: ‎08-30-2012
My Device: 9900
My Carrier: Various
Accepted Solution

Blackberry java ListField

I developed an Rss Application for Blackberry(java) and i successfully displayed Titles(List of Radio Channels need to play online)from Rss File.i already developed code for playing those List of Radio channels,but my requirement is to play First channel(First List)when my List initially(List of Channels) displayed,can any one help me where can i write my logic(Playing first channel by default) to get execute after my channels displayed immediately?

 

Here my code for Rss:

 

public class RssScreen extends MainScreen implements ListFieldCallback,FieldChangeListener {
Connection _connectionthread;
private static ListField _list;
String image;
String title;
private static Vector listElements = new Vector();
private static Vector listImage = new Vector();

public long mycolor ;
VerticalFieldManager mainManager;
VerticalFieldManager subManager;
int selectedList;
Radio radio;

public RssScreen(){
final Bitmap backgroundBitmap = Bitmap.getBitmapResource("blackbackground.png");

mainManager = new VerticalFieldManager(Manager.NO_VERTICAL_SCROLL | Manager.NO_VERTICAL_SCROLLBAR )
{

public void paint(Graphics graphics)
{
graphics.drawBitmap(0, 0, Display.getWidth(),Display.getHeight(),backgroundBitmap, 0, 0);

super.paint(graphics);
}

};

subManager = new VerticalFieldManager(Manager.VERTICAL_SCROLL | Manager.VERTICAL_SCROLLBAR )
{
protected void sublayout( int maxWidth, int maxHeight )
{
int displayWidth = Display.getWidth();
int displayHeight = Display.getHeight();

super.sublayout( displayWidth, displayHeight);
setExtent( displayWidth, displayHeight);
}
};


add(mainManager);


_list = new ListField()

{
protected boolean navigationClick(int status, int time)
{
return true;
}
public void paint(Graphics graphics)

{
graphics.setColor((int) mycolor);
super.paint(graphics);

}

};
mycolor = 0x00FFFFFF;
_list.invalidate();
_list.setEmptyString("* Feeds Not Available *", DrawStyle.HCENTER);
_list.setRowHeight(50);

_list.setCallback(this);
mainManager.add(subManager);
listElements.removeAllElements();
_connectionthread = new Connection();
_connectionthread.start();
}

private class Connection extends Thread
{
public Connection()
{
super();
}

public void run() {
Document doc;
StreamConnection conn = null;
InputStream is = null;
try {

conn = (StreamConnection) Connector.open("http://toucheradio.com/toneradio/android/toriLite/toriplaylist.xml"+";deviceside=true");

DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
docBuilderFactory.setIgnoringElementContentWhitespace(true);
docBuilderFactory.setCoalescing(true);
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
docBuilder.isValidating();
is = conn.openInputStream();
doc = docBuilder.parse(is);
doc.getDocumentElement().normalize();
NodeList listImg = doc.getElementsByTagName("title");
for (int i = 0; i < listImg.getLength(); i++) {
Node textNode = listImg.item(i).getFirstChild();
listElements.addElement(textNode.getNodeValue());
image=textNode.getNodeValue();
}
NodeList list = doc.getElementsByTagName("image");
for (int a = 0; a < list.getLength(); a++) {
Node textNode1 = list.item(a).getFirstChild();
listImage.addElement(textNode1.getNodeValue());
}





}
catch (Exception e) {
System.out.println(e.toString());
} finally {
if (is != null) {
try { is.close();
} catch (IOException ignored) {}
} if (conn != null) {
try { conn.close(); }
catch (IOException ignored) {}
} } UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
_list.setSize(listElements.size());

subManager.add(_list);

invalidate();
}
});
}

}


public void drawListRow(ListField list, Graphics g, int index, int y, int w)
{
String title=(String)listElements.elementAt(index);
String image=(String)listImage.elementAt(index);
// Bitmap image1= getBitmapFromUrl(image);


System.out.println("Title"+title);
System.out.println("Image"+image);
int yPos = 0+y;
g.drawLine(0, yPos, w, yPos);

g.drawText(title, 0, y, 0, w);
// g.drawBitmap(0,y,image1.getWidth(),image1.getHeight(),image1,0,0);

}


public Object get(ListField list, int index)
{
return listElements.elementAt(index);
}
public int indexOfList(ListField list, String prefix, int string)
{
return listElements.indexOf(prefix, string);
}
public int getPreferredWidth(ListField list)
{
return Display.getWidth();
}
public void insert(String toInsert, int index) {
listElements.addElement(toInsert);
}

public void fieldChanged(Field field, int context) {

 


}

}

 

Developer
Posts: 16,999
Registered: ‎07-29-2008
My Device: Z10 LE, Z30, Passport
My Carrier: O2 Germany

Re: Blackberry java ListField

it would be helpful if you would use the code tags to format your code, and to post only a relevant code part.

you should have a play method to be called on userclick, you can call it after the download with the first element of the downloaded stuff.
----------------------------------------------------------
feel free to press the like button on the right side to thank the user that helped you.
please mark posts as solved if you found a solution.
@SimonHain on twitter
Regular Contributor
Posts: 63
Registered: ‎08-30-2012
My Device: 9900
My Carrier: Various

Re: Blackberry java ListField

Hii,thanks for reply,but my requirement is to play first channel by default ,after my list to be displayed?i already wrote code for displaying titles(channels)where can i write my logic for playing first channel by default after my list displayed immediately?

Developer
Posts: 16,999
Registered: ‎07-29-2008
My Device: Z10 LE, Z30, Passport
My Carrier: O2 Germany

Re: Blackberry java ListField

you display the list using
subManager.add(_list);
after that line you can call play(listElements.elementAt(0)).
----------------------------------------------------------
feel free to press the like button on the right side to thank the user that helped you.
please mark posts as solved if you found a solution.
@SimonHain on twitter