ListView的动态刷新
2015年11月24号,又是一次石家庄下雪天,这也是我在石家庄待的第四个年头。上次下大雪的时候还是三年前(我大一),多么的无忧无虑,现在的境地是已在一个公司实习快一个月了。搞的是android开发,说实话我在实习之前只有学习了差不多一个月的android,而且一个月里面还有半个月在看java语法,可以想象在公司里实习有多么困难了吧。。。
公司给的第一个任务(也是目前唯一的一个任务)就是让我写一个P2P(完全体就是People to people,通俗讲就是人对人)的UDP传输工具包括聊天跟传输文件,真是是困难重重啊,几乎就是学一点做一点做到现在都没有完成,可以说一个月之前我唯一知道的关于android语法的就是按钮的监听器,按下就发生一个事件挺好玩的,比单片机的按钮好用0.0。关于我的这个项目以后再慢慢写,现在先说说今天遇到的一个难题吧:
ListView的动态刷新今天可算是纠结死我了,倒不是百度上没有,而是太它妹子的多了,而且大部分都是一样,集合满天飞,不知道作为一个java没看全的新手看你们的代码有多么多么的费劲吗,而且几乎没看到几个写注释的,擦。。。我的目的就是要用一个ListView来显示在同一个局域网里的IP(还是那个操蛋的基于UDP的P2P传输)当然局域网里的IP不是固定的,可能你下去了,我又上来了,肯定得动态刷着了。
直接来代码:
/*************************************************/
/* 定义区 */
/*************************************************/
/* 控件的定义 */
Button bn_change; //定义一个按钮,用来选择刷新
ListView listPartner; //listview在此
/* ListView有关定义 */
ArrayAdapter<String> Adapter;
ArrayList<String> arrlist = new ArrayList<String>();
/* 数据区定义 */
/* 定义一个数组用作为ListView item的内容缓冲区 */
String[] Client_IP = new String[]{"202.206.64.41",
"192.168.1.102","192.168.1.100"};
/****************************************************
系统初始化
1、对各个控件初始化
****************************************************/
class Init{
Init(){
/* 改变按钮的初始化 */
bn_change = (Button)findViewById(R.id.button2);
bn_change.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/* 单击改变listview显示的内容 */
ChangeIP();
}
});
/* 对LIstView的初始化 */
listPartner = (ListView)findViewById(R.id.listView);
arrlist .add("123");
arrlist .add("234"); //随便向arr里赋值,到时候进入界面listview显示就是此时的赋值,也可以不写
/* 对list各项设置单击事件监听器,切记是单击事件,还是选择
这两个监听器是不一样滴(下午在这儿都让我纠结半天) */
listPartner.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
}
});
}
/* 写一个方法用来改变listview里item各项 */
public void ChangeIP(){
arrlist .clear(); //首先将显示的清除
for(int i = 0;i < Client_IP.length;i++){
arrlist .add(Client_IP[i]); //要改变的值
Adapter.notifyDataSetChanged(); //之后想要实现改变刷新IP的功能,只需有一个方法来改变Client_IP数组里的值,之后调用此方法即可
}
}
@Override
proteceted void onCreat(Bundle savedInstanceState){
super.onCreate(saveInstanceStace);
setContentView(R.layout.activity_main_activity_server);
/* 初始化各个控件 */
new Init();
/* 对listview的处理 */
Adapter = new ArrayAdapter<String>(this,R.layout.support_simple_spinner_dropdown_item,arrlist);
listPartner.setAdapter(Adapter);
}
}
瞬间轻松了很多莫有,实际上对与上述方法的动态刷新实际上只有三步(当然对listview的初始化赞不包括其中):
1、 ArrayList<String> arrlist 这个数组是与listview的显示绑定的,对这个数组的操作也就是对listview显示内容的操作。同时刷新前首先要对这个数组clear
2、clear完之后就应该对其赋值,用add方法
3、赋值完之后就通知UI刷新listview就可以了用notifyDataSetChanged();,切记这步,如果不对listview刷新,那就呵呵了0.0
当然此处还是有很多需要学习的地儿,比如对于listview还是有很多学习,同时java语法也得看啊,最齐码集合该看看了,妹子的真费劲,还有Adapter也得查查是啥意思,要不总感觉实现了功能也是晕晕呼呼的