Java 如何更改listview项?

Java 如何更改listview项?,java,android,http,listview,http-get,Java,Android,Http,Listview,Http Get,我从HttpGet获取字符串,我想将它们放入listview。我怎么能这样做?我在任何地方都找不到关于它的任何信息。在运动中,我只准备了一些测试数据 例如 “测试1” 但我希望它是动态的,从手机从HttpGet获取的字符串 谢谢 到目前为止我的代码:(很抱歉代码太乱,我会很快重写它!) 公共类聊天服务扩展活动{ /**在首次创建活动时调用*/ @凌驾 创建时的公共void(Bundle savedInstanceState){ super.onCreate(savedInstanceState)

我从HttpGet获取字符串,我想将它们放入listview。我怎么能这样做?我在任何地方都找不到关于它的任何信息。在运动中,我只准备了一些测试数据

例如

“测试1”

但我希望它是动态的,从手机从HttpGet获取的字符串

谢谢

到目前为止我的代码:(很抱歉代码太乱,我会很快重写它!)

公共类聊天服务扩展活动{
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.chatservice);
试一试{
ContactsandIm();
}捕获(客户端协议例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(URISyntaxException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
CheckLogin();
ListView列表=(ListView)findViewById(R.id.ListView01);
list.setClickable(true);
PhoneBook的最终列表列表=新的ArrayList();
添加(新的电话簿(“a”,“9981728”和test@test.com"));
电话簿列表
.add(新电话簿(“Test1”、“1234455”和test1@test.com"));
添加(新电话簿(“Test2”、“00000”和test2@test.com"));
PhonebookAdapter=新的PhonebookAdapter(此为PhoneBook列表);
list.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView arg0,视图,
整数位置,长索引){
System.out.println(“sadsfsf”);
showToast(listOfPhonebook.get(position.getName());
}
});
list.setAdapter(适配器);
}
私有void CheckLogin(){
//TODO自动生成的方法存根
//创建一个新的HttpClient和Post头
HttpClient HttpClient=新的DefaultHttpClient();
/*如果用户名和密码等于saranga,login.php将返回true*/
HttpPost HttpPost=新的HttpPost(“http://gta5news.com/login.php");
试一试{
//执行HTTP Post请求
w(“HttpPost”,“执行HttpPost请求”);
HttpResponse response=httpclient.execute(httppost);
字符串str=inputStreamToString(response.getEntity().getContent())
.toString();
Log.w(“HttpPost”,str);
if(str.toString().equalsIgnoreCase(“true”)){
Log.w(“HttpPost”、“TRUE”);
试试{Thread.sleep(250);
}捕捉(中断异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
//将意图放在这里(21/3/12);
}否则{
Log.w(“HttpPost”、“FALSE”);
}
}捕获(客户端协议例外e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
}
私有StringBuilder inputStreamToString(InputStream为){
字符串行=”;
StringBuilder总计=新StringBuilder();
//在InputStream周围包装一个BufferedReader
BufferedReader rd=新的BufferedReader(新的InputStreamReader(is));
//读取响应直到结束
试一试{
而((line=rd.readLine())!=null){
合计.追加(行);
}
}捕获(IOE异常){
e、 printStackTrace();
}
//返回完整字符串
返回总数;
}
private void ContactsandIm()引发URI语法异常、ClientProtocolException、IOException{
//TODO自动生成的方法存根
BufferedReader in=null;
字符串数据=null;
HttpClient get=new DefaultHttpClient();
URI网站=新的URI(“http://www.gta5news.com/test.php");
HttpGet webget=新的HttpGet();
webget.setURI(网站);
HttpResponse response=get.execute(webget);
w(“HttpPost”,“执行HttpPost请求”);
in=新的BufferedReader(新的InputStreamReader(response.getEntity().getContent());
//现在我们将返回PHP从MySQL数据库中设置的数据。
//只是一些测试代码,看看HttpGet是否正常工作。
如果(等于(“真”){
Toast.makeText(这个“耶”,Toast.LENGTH_LONG).show();
}
}
//“Contacts Sandim”的端部支架
私有void showtoos(字符串消息){
Toast.makeText(这个,消息,Toast.LENGTH_LONG).show();
}
}

从代码中,我看到PhonebookAdapter是您的自定义适配器类。为什么不解析PhoneBook类型的http响应并将其添加到listOfPhonebook中呢。这将在listView中显示解析的内容。

据我所知,每次Http请求成功时,您都需要添加新的电话簿条目。 如果是这样的话,您必须选择以下选项以使一切动态:

  • 每次收到新数据部分时重新创建适配器:

    • 使listView成为全局变量(使其可从类中的任何函数访问)
    • 对你的清单也做同样的事情
    • 收到新数据部分后,将此数据添加到列表中,创建新适配器并将此适配器设置为ListView
  • 创建一个可更新ListItems的自定义适配器:

    public class YourCustomAdapter extends BaseAdapter { private final LayoutInflater inflater; private ArrayList list = new ArrayList(); private Handler uiHandler = new Handler();
    /*..... default set of functions from BaseAdapter ......*/
    
    public void setList(ArrayList<PhoneBook> list)
    {
        this.list = list;
    }
    
    public void addEntry(final PhoneBook entry)
    {
        uiHandler.post(new Runnable()
        {
            @Override
            public void run() 
            {
                list.add(entry);
                YourCustomAdapter.notifyDataSetChanged();
            }
        });
    }
    
    公共信用 public class YourCustomAdapter extends BaseAdapter { private final LayoutInflater inflater; private ArrayList list = new ArrayList(); private Handler uiHandler = new Handler();
    /*..... default set of functions from BaseAdapter ......*/
    
    public void setList(ArrayList<PhoneBook> list)
    {
        this.list = list;
    }
    
    public void addEntry(final PhoneBook entry)
    {
        uiHandler.post(new Runnable()
        {
            @Override
            public void run() 
            {
                list.add(entry);
                YourCustomAdapter.notifyDataSetChanged();
            }
        });
    }