新闻

MActivity


package com.example.mutil_item;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;

import static com.example.mutil_item.DetailActivity.URL_EXTRA_DATA_KEY;

public class ZKActivity extends AppCompatActivity {

  private ListView news;
  private NewsAdapter mAdapter;

  @Override protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_zk);
    news = findViewById(R.id.news);
    mAdapter = new NewsAdapter(this);
    news.setAdapter(mAdapter);
    //news.setOnClickListener();
    news.setOnItemClickListener(new AdapterView.OnItemClickListener() {
      @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Intent intent = new Intent(ZKActivity.this, DetailActivity.class);
        intent.putExtra(URL_EXTRA_DATA_KEY, mAdapter.getItem(position).getUrl());
        startActivity(intent);
      }
    });
    loadData();
  }
  private String ttUrl =
      "http://result.eolinker.com/k2BaduF2a6caa275f395919a66ab1dfe4b584cc60685573?uri=tt";
  private String gnUrl =
      "http://result.eolinker.com/k2BaduF2a6caa275f395919a66ab1dfe4b584cc60685573?uri=gn";
  @SuppressLint("StaticFieldLeak") private void loadData() {
    new AsyncTask<String, Void, List<NewsResponseBean.NewsItem>>() {
      @Override protected List<NewsResponseBean.NewsItem> doInBackground(String... strings) {
        List<NewsResponseBean.NewsItem> result = new ArrayList<>();
        for (String url:strings) {
          NewsResponseBean bean = NetUtil.getRequest(url, NewsResponseBean.class);
          //只有最后一组结果
          //result = bean.getResult().getData();
          result.addAll(bean.getResult().getData());
        }
        return result;
      }
      @Override protected void onPostExecute(List<NewsResponseBean.NewsItem> newsItems) {
        mAdapter.setDatas(newsItems);
      }
    }.execute(ttUrl, gnUrl);
  }
}

NewsAdapter

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;

public class NewsAdapter extends BaseAdapter {

  private List<NewsResponseBean.NewsItem> mDatas;
  private Context context;
  // 0 - count-1
  private final int TT_ITEM = 0;
  private final int GN_ITEM = 1;
  private final int ITEM_COUNT = 2;

  //展示 两种类型条目:文本    文本+图片

  public NewsAdapter(Context context) {
    this.context = context;
    mDatas = new ArrayList<>();
  }

  public void setDatas(List<NewsResponseBean.NewsItem> datas) {
    this.mDatas = datas;
    notifyDataSetChanged();
  }

  @Override public int getViewTypeCount() {
    return ITEM_COUNT;
  }

  @Override public int getItemViewType(int position) {
    return getItem(position).isTT() ? TT_ITEM : GN_ITEM;
  }

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

  @Override public NewsResponseBean.NewsItem getItem(int position) {
    return mDatas.get(position);
  }

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

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

    //单一职责

    //1 创建item

    if (convertView == null) {
      convertView = LayoutInflater.from(context).inflate(
          getItemViewType(position) == GN_ITEM ? R.layout.item_gn : R.layout.item_tt
          , parent, false);
      viewHolder = new ViewHolder(convertView);
    } else {
      viewHolder = (ViewHolder) convertView.getTag();
    }

    viewHolder.bind(getItem(position));

    return convertView;
  }

  class ViewHolder {
    //如果是国内新闻,icon不为空;否则icon为空
    ImageView icon;

    TextView title;
    TextView date;

    public ViewHolder(View convertView) {
      title = convertView.findViewById(R.id.title);
      date = convertView.findViewById(R.id.date);
      //可能为空
      icon = convertView.findViewById(R.id.icon);
      convertView.setTag(this);
    }

    public void bind(NewsResponseBean.NewsItem newsItem) {
      title.setText(newsItem.getTitle());
      date.setText(newsItem.getDate());
      if(icon != null) {
        //加载图片
        icon.setImageResource(R.mipmap.ic_launcher);
      }
     /* if (getItemViewType(position) == GN_ITEM) {
        //加载图片
      }*/
    }
  }
}

猜你喜欢

转载自blog.csdn.net/Hyy2162427252/article/details/83716618