android - 安卓里面如何实时刷新listview中item的局部地方?

查看:91
本文介绍了android - 安卓里面如何实时刷新listview中item的局部地方?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

比如listview的item里面含有姓名、年龄和头像;我想让姓名和年龄实时刷新数据,头像不刷新,怎么用代码实现啊?

解决方案

实现的方式参见下面的示例:

public class ParticalRefreshActivity extends ListActivity {

    String[] contents = new String[]{"aa","bb","cc","dd","ee","ff","gg","hh","ii","jj","kk","ll","mm","nn","oo","pp","qq","rr","ss","tt","uu","vv","ww","xx","yy","zz"};

    ParticalRefreshAdapter mAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mAdapter = new ParticalRefreshAdapter(this,contents);
        setListAdapter(mAdapter);
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        mAdapter.refreshFixPosition(position);
    }

    class ParticalRefreshAdapter extends BaseAdapter{

        public String[] contents;
        LayoutInflater mInflater;

        public ParticalRefreshAdapter(Context context,String[] contents){
            this.contents = contents;
            mInflater = LayoutInflater.from(context);
        }
        @Override
        public int getCount() {
            return contents.length;
        }

        @Override
        public Object getItem(int position) {
            return null;
        }

        @Override
        public long getItemId(int position) {
            return 0;
        }

        //局部刷新的代码
        public void refreshFixPosition(int position){
            //刷新局部的item
            ViewHolder holder = map.get(position);
            String text = holder.textView.getText().toString().trim();
            holder.textView.setText(text+"-");
            //更改数据源,防止滑动时数据错误
            contents[position] = text+"-";
        }

        public Map<Integer,ViewHolder> map = new HashMap<>();

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            ViewHolder holder;
            if(convertView == null) {
                convertView = mInflater.inflate(R.layout.item_partical_refresh, null);
                holder = new ViewHolder();
                holder.textView = (TextView) convertView.findViewById(R.id.tv_partical_refresh);
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }

            holder.textView.setText(contents[position]);
            map.put(position, holder);
            return convertView;
        }

        class ViewHolder{
            TextView textView;
        }
    }
}

这篇关于android - 安卓里面如何实时刷新listview中item的局部地方?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆