MainActivity
package com.example.a08_multi_item; import android.os.AsyncTask; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.widget.ListView; import com.google.gson.Gson; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class MainActivity extends AppCompatActivity { private ListView lv; private String path = "http://ic.snssdk.com/2/article/v25/stream/?count=20&min_behot_time=1504621638&bd_latitude=4.9E-324&bd_longitude=4.9E-324&bd_loc_time=1504622133&loc_mode=5&loc_time=1504564532&latitude=35.00125&longitude=113.56358166666665&city=%E7%84%A6%E4%BD%9C&lac=34197&cid=23201&iid=14534335953&device_id=38818211465&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SM-E7000&os_api=19&os_version=4.4.2&uuid=357698010742401&openudid=74f06d2f9d8c9664"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.lv); getData(); } private void getData() { AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { try { URL url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setReadTimeout(5000); connection.setConnectTimeout(5000); int responseCode = connection.getResponseCode(); if (responseCode == 200) { InputStream inputStream = connection.getInputStream(); String json = streamTostring(inputStream, "utf-8"); Log.i("------", json); return json; } } catch (Exception e) { e.printStackTrace(); } return ""; } @Override protected void onPostExecute(String json) { Gson gson = new Gson(); NewsDataBean newsDataBean = gson.fromJson(json, NewsDataBean.class); NewsAdapter newadapter = new NewsAdapter(MainActivity.this, newsDataBean.getData()); lv.setAdapter(newadapter); } }; asyncTask.execute(); } private String streamTostring(InputStream inputStream, String charset) { try { InputStreamReader inputStreamReader = new InputStreamReader(inputStream, charset); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); StringBuilder builder = new StringBuilder(); String string = null; while ((string = bufferedReader.readLine()) != null) { builder.append(string); } bufferedReader.close(); return builder.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } }
-----------------------------------------------------------------------------------------
NewsAdapter
-----------------------------------------------------------------------------------------
package com.example.a08_multi_item; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import java.util.List; /** * Created by lenovo on 2017/9/10. */ public class NewsAdapter extends BaseAdapter { Context context; List<NewsDataBean.DataBean> list; private final int TYPE_VIDEO=0; private final int TYPE_IMAGE_THREEE=1; private final int TYPE_IMAGE_ONE=2; private final int TYPE_NORMAL=3; public NewsAdapter(Context context, List<NewsDataBean.DataBean> list) { this.list=list; this.context=context; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public int getViewTypeCount() { return 4; } @Override public int getItemViewType(int position) { if (list.get(position).isHas_video()){ return TYPE_VIDEO; }else if (list.get(position).isHas_image()){ if (list.get(position).getImage_list().size()>=3){ return TYPE_IMAGE_THREEE; }else { return TYPE_IMAGE_ONE; } } return TYPE_NORMAL; } @Override public View getView(int i, View view, ViewGroup viewGroup) { if (getItemViewType(i)==TYPE_VIDEO){ ViewHolder holder; if (view==null){ view=View.inflate(context,R.layout.item_video,null); holder=new ViewHolder(); holder.text_title=view.findViewById(R.id.text_title); view.setTag(holder); }else { holder= (ViewHolder) view.getTag(); } holder.text_title.setText(list.get(i).getTitle()); }else if (getItemViewType(i)==TYPE_IMAGE_THREEE){ ImageThreeHolder holder; if (view==null){ view=View.inflate(context,R.layout.item_three_image,null); holder=new ImageThreeHolder(); holder.text_title=view.findViewById(R.id.text_title); view.setTag(holder); }else { holder= (ImageThreeHolder) view.getTag(); } holder.text_title.setText(list.get(i).getTitle()); }else if (getItemViewType(i)==TYPE_IMAGE_ONE){ ImageOneHolder holder; if (view==null){ view=View.inflate(context,R.layout.item_image_one,null); holder=new ImageOneHolder(); holder.text_title=view.findViewById(R.id.text_title); view.setTag(holder); }else { holder= (ImageOneHolder) view.getTag(); } holder.text_title.setText(list.get(i).getTitle()); }else { NormalHolder holder; if (view==null){ view=View.inflate(context,R.layout.item_normal,null); holder=new NormalHolder(); holder.text_title=view.findViewById(R.id.text_title); view.setTag(holder); }else { holder= (NormalHolder) view.getTag(); } holder.text_title.setText(list.get(i).getTitle()); } return view; } private class ViewHolder{ TextView text_title; ImageView imageView; } private class ImageThreeHolder{ TextView text_title; ImageView image_01; ImageView image_02; ImageView image_03; } private class ImageOneHolder{ TextView text_title; ImageView imageView; } private class NormalHolder{ TextView text_title; } }
--------------------------------------------------------------------------
--------------------------------------------------------------------------