Почему я не получаю Просмотры? - PullRequest
0 голосов
/ 16 января 2012

У меня есть следующий код

     ProgressDialog pd;
 LinearLayout layout;
 ListView listview;
 TextView name[];
 TextView website[];
/** Called when the activity is first created. 
 */

@Override
public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main); 
       pd = ProgressDialog.show(this,
               "Title",
               "Message",
               true, false);

       new Thread(new Runnable(){
           public void run(){
           begin();
           pd.dismiss();
           }
           }).start();







    }




public void begin(){       
    Calendar c = Calendar.getInstance(); 

    String dia2,mes2;
    mes2="0";
   int dia = c.get(Calendar.DAY_OF_MONTH); 
   int mes = c.get(Calendar.MONTH); 




    try {

    URL url = new URL(
    "http://www.tudiscovery.com/dni-tvlistings/GetScheduleByBroadcastDate?type=day&country_code=LTM&channel_code=DCLA-SP&date="+ dia2 +""+ mes2 +"2012");



    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document doc = db.parse(new InputSource(url.openStream()));

    doc.getDocumentElement().normalize();

    NodeList nodeList = doc.getElementsByTagName("programme");

    /** Assign textview array lenght by arraylist size */
    name = new TextView[nodeList.getLength()];
    website = new TextView[nodeList.getLength()];


    for (int i = 0; i <= nodeList.getLength(); i++) {

    Node node = nodeList.item(i);

    name[i] = new TextView(this);
    website[i] = new TextView(this);


    Element fstElmnt = (Element) node;
    NodeList nameList = fstElmnt.getElementsByTagName("series-title");
    Element nameElement = (Element) nameList.item(0);
    nameList = nameElement.getChildNodes();

    name[i].setText("Programa = "
    + ((Node) nameList.item(0)).getNodeValue());

    NodeList websiteList = fstElmnt.getElementsByTagName("raw");
    Element websiteElement = (Element) websiteList.item(0);
    websiteList = websiteElement.getChildNodes();
    website[i].setText("Hora = "
    + ((Node) websiteList.item(0)).getNodeValue().subSequence(0, 2) +":" + ((Node) websiteList.item(0)).getNodeValue().subSequence(2, 4));


    name[i].setTextColor(Color.RED);
    name[i].setTextSize(12);
   layout.addView(name[i]);
    layout.addView(website[i]);



    } 


    } catch (Exception e) {
    System.out.println("XML Pasing Excpetion = " + e);
    }

когда я хочу получить представление, я получил эту ошибку: только исходный поток, создавший иерархию представлений, может касаться его представлений.
У кого-нибудь есть решение для этого кода?
PSD: это анализ rss

1 Ответ

2 голосов
/ 16 января 2012

Вы не можете обновить пользовательский интерфейс в отдельном потоке. Вы можете обновить его только в Главной теме

 new Thread(new Runnable(){
       public void run(){
       begin();
       pd.dismiss();
       }
       }).start();

Для этого вы должны использовать AsnycTask . У него есть методы, которые позволяют обновлять основной пользовательский интерфейс во время выполнения фоновой работы, или после, или до его завершения.

...