ListView优化-ViewHolder

适配器MyListAdapter代码:

public class MyListAdapter extends BaseAdapter {
private List myDate;
private Context context;

//构造方法
public MyListAdapter(Context context, List<News> myDate) {
    this.context = context;
    this.myDate = myDate;
}

@Override
public int getCount() {
    return myDate.size();
}

@Override
public Object getItem(int position) {
    return myDate.get(position);
}

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

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

    final ViewHolder vh;
    if (convertView == null) {
        //第一次加载时执行 就执行一次
        vh = new ViewHolder();
        convertView = LayoutInflater.from(context).inflate(R.layout.list_layout_base, null);
        vh.title = (TextView) convertView.findViewById(R.id.title);
        vh.pubDate = (TextView) convertView.findViewById(R.id.pubDate);
        vh.from = (TextView) convertView.findViewById(R.id.from);
        vh.img = (ImageView) convertView.findViewById(R.id.img);
        vh.good = (TextView) convertView.findViewById(R.id.good);
        vh.goodCount = (TextView) convertView.findViewById(R.id.goodCount);
        //保存住实体类
        convertView.setTag(vh);
    } else {
        vh = (ViewHolder) convertView.getTag();
    }

    vh.img.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(context, "点击了图片" + position, Toast.LENGTH_SHORT).show();
        }
    });
    final News ns = myDate.get(position);
    vh.good.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int count = Integer.parseInt(vh.goodCount.getText().toString()) + 1;
            vh.goodCount.setText(count + "");
            ns.setGoodCount(count);
        }
    });
    vh.title.setText(ns.getTitle());
    vh.pubDate.setText(ns.getPubDdte());
    vh.from.setText(ns.getFrom());
    vh.img.setImageResource(ns.getImg());
    vh.goodCount.setText(ns.getGoodCount() + "");
    return convertView;
}

public class ViewHolder {
    TextView title;
    ImageView img;
    TextView pubDate;
    TextView from;
    TextView good;
    TextView goodCount;
}

}

实体类:News

public class News {
private String title;
private String pubDdte;
private String newsId;
private int img;
private String from;
private int goodCount;

public News() {
}


public void setGoodCount(int goodCount) {
    this.goodCount = goodCount;
}

public int getGoodCount() {
    return goodCount;
}

public News(String title, String pubDdte, String newsId, int img, String from, int goodCount) {
    this.title = title;
    this.pubDdte = pubDdte;
    this.newsId = newsId;
    this.img = img;
    this.from = from;
    this.goodCount = goodCount;
}

public void setTitle(String title) {
    this.title = title;
}

public void setPubDdte(String pubDdte) {
    this.pubDdte = pubDdte;
}

public void setNewsId(String newsId) {
    this.newsId = newsId;
}

public void setImg(int img) {
    this.img = img;
}

public void setFrom(String from) {
    this.from = from;
}

public String getTitle() {
    return title;
}

public String getPubDdte() {
    return pubDdte;
}

public String getNewsId() {
    return newsId;
}

public int getImg() {
    return img;
}

public String getFrom() {
    return from;
}

}

“`
Activity

“`public class List3Activity extends AppCompatActivity {
private ListView lv;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list3);
    lv= (ListView) findViewById(R.id.lv);
    List list=new ArrayList();
    News ns=new News("新闻1","刚刚","n001",R.mipmap.a,"搜狐网",0);
    list.add(ns);
    ns=new News("新闻2","今天","n002",R.mipmap.b,"新浪网",0);
    list.add(ns);
    ns=new News("新闻3","昨天","n003",R.mipmap.c,"未来网",0);
    list.add(ns);
    ns=new News("新闻4","后天","n004",R.mipmap.d,"网易网",0);
    list.add(ns);
    ns=new News("新闻5","明天","n005",R.mipmap.e2,"腾讯网",0);
    list.add(ns);
    ns=new News("新闻6","昨天","n006",R.mipmap.f1,"天涯网",0);
    list.add(ns);
    ns=new News("新闻7","今天","n007",R.mipmap.g2,"腾讯网",0);
    list.add(ns);
    ns=new News("新闻8","昨天","n008",R.mipmap.a2,"天涯网",0);
    list.add(ns);
    ns=new News("新闻9","前天","n009",R.mipmap.a1,"搜狐网",0);
    list.add(ns);
    lv.setAdapter(new MyListAdapter(this,list));
}

}

Activity的布局:

这里写图片描述

实现效果:
这里写图片描述

可以实现点击good然后评论就会加1,点击图片出现点击了图片的效果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值