Android - ListView ArrayAdapter VIewHolder

Android - ListView ArrayAdapter VIewHolder

很久没写Android,一写突然忘掉一堆,也找不到我想要的解,

自己再重写一遍,(原来我认为的基本,结果当我需要的时候,找不到,这基本算是满重要的)

首先要先建立自己的Model

MessageItem 如下

public class MessageItem {
    public String Title = "初始標題";
    public String Content = "知始內容";

    public String getTitle() {
        return this.Title;
    }

    public void setTitle(String value) {
        this.Title = value;
    }
    public String getContent() {
        return this.Content;
    }

    public void setContent(String value) {
        this.Content = value;
    }

}

然后建立继承ArrayAdapter,并使用泛型

public class MessageListAdapter extends ArrayAdapter<MessageItem> {
    private Context mContext;

    static class ViewHolder{
        TextView mTitle;
        TextView mContent;
    }

    public MessageListAdapter(Context ctx) {
        super(ctx, R.layout.item_message);
        mContext = ctx;
    }

    @Override
    public View getView(int position,  View convertView, ViewGroup parent) {
        LayoutInflater inflater =  (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        ViewHolder holder;

        if (convertView == null) {
            holder = new ViewHolder();
            convertView = inflater.inflate(R.layout.item_message, null);
            holder.mTitle = (TextView) convertView.findViewById(R.id.tv_title);
            holder.mContent = (TextView) convertView.findViewById(R.id.tv_content);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        MessageItem item = this.getItem(position);

        holder.mTitle.setText(item.getTitle());
        holder.mContent.setText(item.getContent());

        return convertView;
    }
}

在Activity页面,取得ListView 后,设定Adapter

mListMessgae = (ListView) this.findViewById(R.id.list_message);
 mAdapter = new MessageListAdapter(this);
 mListMessgae.setAdapter(mAdapter);

这之间当然有要捞资料的部分使用的AsyncTask

 public class LoadTask extends AsyncTask<Void, Void, Void> {
        public List<MessageItem> mItems = new ArrayList<MessageItem>();
        @Override
        protected Void doInBackground(Void... voids) {
            mItems = appApi.GetMessages();
            return null;
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
            mAdapter.clear();;
            mAdapter.addAll(mItems);
            mAdapter.notifyDataSetChanged();
        }
    }

Activity OnCreate的时候执行

        LoadTask task = new LoadTask();
        task.execute();

完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值