一方面点击listview时,可以在重写的setOnItemClickListene()方法中获得item的view,从而改变
例如:
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> listView, View view, int position,
long id) {
ImageView listimage;
listimage =(ImageView) view.findViewById(R.id.ItemImage);
listimage.setImageResource(android.R.drawable.presence_online);//改变ImageView的图片
}
});
另一方面,如果是在其他方法中调用,或者是想改变其他item的view的值的话,我的思路是重新setAdapter(adapter)
然后定位listview到你改变的那一行。
思路:向继承 BaseAdapter的类中传入想要改变item的位置,然后判断在getView中判断int position是否等于传入的值,是就改变,否则还原默认;可以传入-1作为全部还原的标志;
核心代码:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
// 获得ViewHolder对象
holder = new ViewHolder();
// 导入布局并赋值给convertview
convertView = inflater.inflate(R.layout.item_local, null);
holder.cb = (ImageView) convertView.findViewById(R.id.ItemImage);
// 为view设置标签
convertView.setTag(holder);
} else {
// 取出holder
holder = (ViewHolder) convertView.getTag();
}
if(position_list!=-1){
if(position_list==position){//如果传入的位置等于当前位置,则修改图片,否则还原为默认
holder.cb.setImageResource(android.R.drawable.presence_online);
}else{
holder.cb.setImageResource(android.R.drawable.presence_invisible);
}
}else{//等于-1时,设置为默认图片
holder.cb.setImageResource(android.R.drawable.presence_invisible);
}
return convertView;
}
调用时可以这样写:
1:全部还原
// 实例化自定义的MyAdapter
mAdapter = new MyAdapter(list, this,-1);
// 绑定Adapter
listView.setAdapter(mAdapter);2:设置某一个
// 实例化自定义的MyAdapter
mAdapter = new MyAdapter(audioList, this,position_list);
// 绑定Adapter
listView.setAdapter(mAdapter);
mAdapter.notifyDataSetInvalidated();//通知adapter数据有变化
listView.setSelection(currentItem);//定位到currentItem行 本人大二Android新手,上个周六开始学的,到现在快一个星期了,每天白天上上课,下午踢踢球,就晚上自学一下,不知道还有什么别的方式,肯定还有!在这做个笔记,到之后有机会再改吧~