0

httpconnection でデータを取得し、ResponseHandler といくつかの操作操作で値を取得したいだけです。次に、それらをリストビューに入れたいだけです。しかし、私はできませんでした。

まず、スレッドで値を取得しています。次に、メインスレッドで操作を行ってアダプターに値を追加しますが、例外または空白のリストビューを取得しています。

私のサンプルコードは次のとおりです。

 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_x);

        m_results = new ArrayList<Type>();


        /*
        rs.setDate("22.09.2012");
        rs.setOne("5");
        rs.setTwo("12");
        rs.setThree("18");
        rs.setFour("21");
        rs.setFive("44");
        rs.setSix("48");
        */


        this.m_adapter = new Adapter(this, R.layout.resultrow, m_results);
        setListAdapter(this.m_adapter);




        sendNumbers = new Runnable() {

            @Override
            public void run() {


                httpclnt = new DefaultHttpClient();

                httppst = new HttpPost("url");

                try {           


            ResponseHandler<String> responseHandler = new BasicResponseHandler();

                    response = httpclnt.execute(httppst, responseHandler);

                    message = response;





                    handler.sendEmptyMessage(0);


                }catch (ClientProtocolException e) {
                    Toast.makeText(getApplicationContext(), "Client protocol exception ", Toast.LENGTH_LONG).show();
                } catch (IOException e) {
                    Toast.makeText(getApplicationContext(), "IO exception "+e.getMessage(), Toast.LENGTH_LONG).show();
                } 

            }
        };
            Thread thread = new Thread(sendNumbers,"sendNumbers");
            thread.start();



        handler = new Handler() {

                public void handleMessage(Message msg) {

                    firstResult = message.substring(0,message.indexOf(")"));

 firstDate = firstResult.substring(firstResult.indexOf(">")+2,firstResult.indexOf(">")+12);
                         firstNumbers=firstResult.substring(firstResult.lastIndexOf(">")+2,firstResult.lastIndexOf(">")+19);

                    rs.setDate(firstDate.substring(firstDate.lastIndexOf("-")+1,firstDate.lastIndexOf("-")+3)+"."
                            +firstDate.substring(firstDate.indexOf("-")+1,firstDate.indexOf("-")+3)+"."+firstDate.substring(0,4));

                    m_results.add(rs);


                    m_adapter.notifyDataSetChanged();


                        }
                    };   
4

3 に答える 3

0

あなたのコードの参照用に使用してください..

XMLParser parser = new XMLParser();
    String xml = parser.getXmlFromUrl(URL); // getting XML from URL
    Document doc = parser.getDomElement(xml); // getting DOM element

    NodeList nl = doc.getElementsByTagName(KEY_SONG);
    // looping through all song nodes &lt;song&gt;
    for (int i = 0; i &lt; nl.getLength(); i++) {
        // creating new HashMap
        HashMap&lt;String, String&gt; map = new HashMap&lt;String, String&gt;();
        Element e = (Element) nl.item(i);
        // adding each child node to HashMap key =&gt; value
        map.put(KEY_ID, parser.getValue(e, KEY_ID));
        map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
        map.put(KEY_ARTIST, parser.getValue(e, KEY_ARTIST));
        map.put(KEY_DURATION, parser.getValue(e, KEY_DURATION));
        map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL));

        // adding HashList to ArrayList
        songsList.add(map);

それはあなたを助けるかもしれません!.そして、このリンクも試してください...

http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/

于 2012-10-19T11:18:21.250 に答える
0

スレッドの代わりに非同期タスクを使用し、

public class Get_User_Data extends AsyncTask<Void, Void, Void> {

            private final ProgressDialog dialog = new ProgressDialog(
            MyActivity.this);

    protected void onPreExecute() {
        this.dialog.setMessage("Loading...");
        this.dialog.setCancelable(false);
        this.dialog.show();
    }
        @Override
        protected Void doInBackground(Void... params) {

                    uploadImage(); // inside the method paste your file uploading code
            return null;
        }

        protected void onPostExecute(Void result) {

            // Here if you wish to do future process for ex. move to another activity do here

            if (dialog.isShowing()) {
                dialog.dismiss();
            }

        }
    }

詳細については、このリンクを参照してくださいhttp://vikaskanani.wordpress.com/2011/01/29/android-image-upload-activity/

于 2012-10-19T11:13:56.673 に答える
0

@Aerrow のソリューションは優れています。
コードをあまり 変更したくない場合はThread thread = new Thread(sendNumbers,"sendNumbers");
HandlerThread thread = new HandlerThread("sendNumbers",sendNumbers);

于 2012-10-19T11:22:03.560 に答える