如何从Internet添加listview项目

时间:2012-03-22 17:18:03

标签: java android http android-listview

我仍然在努力寻找我的问题的答案。我想为listview中的每个项目下载3个字符串到手机。我知道如何从服务器获取所有数据,而不是如何将数据附加到litview,我真的很生气,这个问题让我感到沮丧。

我的代码:

public class ChatService extends Activity {
    /** Called when the activity is first created. */


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.chatservice);
        try {
            ContactsandIm();
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (URISyntaxException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        CheckLogin();


    private void CheckLogin() {
        // TODO Auto-generated method stub
        // Create a new HttpClient and Post Header
                HttpClient httpclient = new DefaultHttpClient();

                /* login.php returns true if username and password is equal to saranga */
                HttpPost httppost = new HttpPost("http://gta5news.com/login.php");

                try {

                    // Execute HTTP Post Request
                    Log.w("HttpPost", "Execute HTTP Post Request");
                    HttpResponse response = httpclient.execute(httppost);

                    String str = inputStreamToString(response.getEntity().getContent())
                            .toString();
                    Log.w("HttpPost", str);

                    if (str.toString().equalsIgnoreCase("true")) {
                        Log.w("HttpPost", "TRUE");
                        try {Thread.sleep(250);
                        } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }

                        //put intent here(21/3/12); 

                    } else {
                        Log.w("HttpPost", "FALSE");

                    }

                } catch (ClientProtocolException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            private StringBuilder inputStreamToString(InputStream is) {
                String line = "";
                StringBuilder total = new StringBuilder();
                // Wrap a BufferedReader around the InputStream
                BufferedReader rd = new BufferedReader(new InputStreamReader(is));
                // Read response until the end
                try {
                    while ((line = rd.readLine()) != null) {
                        total.append(line);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
                // Return full string
                return total;
            }




    private void ContactsandIm() throws URISyntaxException, ClientProtocolException, IOException {
        // TODO Auto-generated method stub
        BufferedReader in = null;
        String data = null;


        HttpClient get = new DefaultHttpClient();
        URI website = new URI("http://www.gta5news.com/test.php");
        HttpGet webget = new HttpGet();
        webget.setURI(website);
        HttpResponse response = get.execute(webget);
        Log.w("HttpPost", "Execute HTTP Post Request");
        in = new BufferedReader (new InputStreamReader(response.getEntity().getContent()));
        //now we'll return the data that the PHP set from the MySQL Database.




        if (in.equals("True")); {
            Toast.makeText(this,"yay", Toast.LENGTH_LONG).show();
        }






    }

    // end bracket for "ContactsandIm"

    private void showToast(String message) {
        Toast.makeText(this, message, Toast.LENGTH_LONG).show();
    }
}

2 个答案:

答案 0 :(得分:0)

在列表中使用ArrayAdapter,然后向此适配器添加项目,然后在其上调用notifyDatasetChanged,然后点击

答案 1 :(得分:0)

首先,当我们使用网络线程连接到服务器时,您应该转到AsyncTaskHandlers。这是专门用于处理此类Thread s。

ListView可以使用默认的Listview和自定义列表视图创建,我们可以在Row.xml中设计我们自己的Row设计,同样的设计将用于所有行。

如果你想继续前进或者去寻找一些先进的Listview,那么我们甚至可以为不同的行使用'n'个设计。

在您的情况下,您应该使用AsyncTask来获取数据并使用Listview来显示行。

您可以从以下链接获取更多信息。

https://docs.google.com/leaf?id=0B2qCFbmeiTFxN2ViZjVlOTUtNmY3ZS00NThhLTg3N2UtYjVkYjgyM2Y4MWUy&hl=en&authkey=COeP8JYN