Создайте Arraylist и добавьте элементы в Listview - PullRequest
1 голос
/ 21 октября 2011

Я проанализировал несколько элементов с помощью JSoup, которые я хочу добавить к списку, желательно через архива, например:

End date: 08-10-2012
Left: € 38,50

Может кто-нибудь помочь мне?Заранее спасибо.

Результат JSoup как System.out.println:

End date: // td:eq(0)
Left:     // td:eq(0)
08-10-2012  // td:eq(1)
€ 38,50     // td:eq(1)

Мой код:

@Override 
    protected void onPostExecute(String result) { 
        //publishProgress(false); 
        TextView tv = (TextView)findViewById(R.id.lbl_top);
        ListView kp = (ListView)findViewById(R.id.kpn);
        tv.setText("");

        Document doc = Jsoup.parse(kpn);
        Elements tdsFromSecondColumn = doc.select("table.personaltable td:eq(0)");
        Elements tdsFromSecondColumn1 = doc.select("table.personaltable td:eq(1)"); 

        for (Element tdFromSecondColumn : tdsFromSecondColumn) { 
            System.out.println(tdFromSecondColumn.text()); 
            tv.setText(tdFromSecondColumn.text());
            //kp.setAdapter(adapter);
        } 
        for (Element tdFromSecondColumn1 : tdsFromSecondColumn1) { 
            System.out.println(tdFromSecondColumn1.text());
        }

Редактировать:

@Override 
    protected void onPostExecute(String result) { 
        //publishProgress(false); 
        // create the grid item mapping
        ListView kp = (ListView)findViewById(R.id.kpn);

        String[] from = new String[] {"col_1", "col_2"};
        int[] to = new int[] { R.id.lbl_password, R.id.lbl_result };

        List<HashMap<String, String>> fillMaps = new ArrayList<HashMap<String, String>>();
        HashMap<String, String> map = new HashMap<String, String>();

        TextView tv = (TextView)findViewById(R.id.lbl_top);
        tv.setText("");

        Document doc = Jsoup.parse(kpn);
        Elements tdsFromSecondColumn = doc.select("table.personaltable td:eq(0)");
        Elements tdsFromSecondColumn1 = doc.select("table.personaltable td:eq(1)"); 

        for (Element tdFromSecondColumn : tdsFromSecondColumn) {
            map.put("col_1", tdFromSecondColumn.text()); 
            fillMaps.add(map);

            System.out.println(tdFromSecondColumn.text()); 
            tv.setText(tdFromSecondColumn.text());
            //kp.setAdapter(adapter);
        } 
        for (Element tdFromSecondColumn1 : tdsFromSecondColumn1) {
            map.put("col_2", tdFromSecondColumn1.text());
            fillMaps.add(map);

            System.out.println(tdFromSecondColumn1.text());
        }

        SimpleAdapter adapter = new SimpleAdapter(AndroidLogin.this, fillMaps, R.layout.main, from, to); 
        kp.setAdapter(adapter);

Приложение вылетает, Logcat:

ERROR/AndroidRuntime(9105): java.lang.IllegalArgumentException: Object must not be null

Ответы [ 2 ]

0 голосов
/ 21 октября 2011

Я предлагаю также SimpleAdapter;посмотрите этот хорошо сделанный пример Я следовал, когда мне нужно было изучить этот адаптер.

И вам будет легко повторно использовать код, который вы уже написали, поскольку он очень похож

0 голосов
/ 21 октября 2011

Вы должны попробовать использовать SimpleAdapter в качестве адаптера списка.Просто сопоставьте значения в вашем массиве с соответствующими частями представления, которое вы используете для каждой строки в вашем списке.Вот пример использования SimpleAdapter.Вот пример использования адаптера другого типа, ArrayAdapter , который может быть еще более полезным для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...