您的位置:首页 > 理论基础 > 计算机网络

ListView多条目展示 请求网络数据 和图片

2017-08-10 17:05 537 查看
public class MainActivity extends AppCompatActivity {

private ListView lv;
private List<Da.DataBean> list;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// 找控件
lv = (ListView) findViewById(R.id.lv);
list = new ArrayList<Da.DataBean>();
// 初始化数据
initData();

}

private void initData() {

new AsyncTask<String,Integer,String>(){
@Override
protected void onPostExecute(String s) {
// 设置适配器
MyAdapter adapter = new MyAdapter();
lv.setAdapter(adapter);

super.onPostExecute(s);
}

@Override
protected String doInBackground<
4000
/span>(String... strings) {

getData();

// ImageLoader
ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(MainActivity.this);
ImageLoader.getInstance().init(configuration);

return null;

}
}.execute();

}

private void getData() {

try {
// 请求网络数据
URL url = new URL("http://");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
int code = conn.getResponseCode();
if(code == 200){

Gson gson = new Gson();
Da da = gson.fromJson(new InputStreamReader(conn.getInputStream(),"GBK"),Da.class);
list = da.getData();
}
} catch (Exception e) {
e.printStackTrace();
}

}

// 优化适配器
class MyAdapter extends BaseAdapter{

public static final int TYPE_ONE = 1;
public static final int TYPE_TWO = 2;
public static final int TYPE_THREE = 3;

// 在使用多条目加载的时候    返回当前position对应的类型
// ************必须满足的条件   getItemViewType的返回值  必须要小于getViewTypeCount的返回值
@Override
public int getItemViewType(int position) {

if(list.get(position).getType() == 10001){
return TYPE_ONE;
}else if(list.get(position).getType() == 10002){
return TYPE_TWO;
}else{
return  TYPE_THREE;
}
}

// 使用多条目加载时   一共有几种类型
// 从写该方法后,listview控件会知道  当前的布局样式不止一种
// 所以 当ListView发现convertview在复用时  类型匹配不上时  会重新让convertView加载一遍布局
@Override
public int getViewTypeCount() {
return 5;
}

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

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

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

@Override
public View getView(int position, View view, ViewGroup viewGroup) {

ViewHolder1 holder1 = null;
ViewHolder2 holder2 = null;
ViewHolder3 holder3 = null;

int type = getItemViewType(position);

if(view == null){

if(type == TYPE_ONE) {
view = View.inflate(MainActivity.this, R.layout.item1, null);
holder1 = new ViewHolder1();
holder1.news_id1 = view.findViewById(R.id.tv1_id);
holder1.news_title1 = view.findViewById(R.id.tv1_title);
holder1.news_summary1 = view.findViewById(R.id.tv1_summary);
holder1.pic_url1 = view.findViewById(R.id.iv1);

view.setTag(holder1);
}else if(type == TYPE_TWO){
view = View.inflate(MainActivity.this, R.layout.item2, null);
holder2 = new ViewHolder2();
holder2.news_id2 = view.findViewById(R.id.tv2_id);
holder2.news_title2 = view.findViewById(R.id.tv2_title);
holder2.news_summary2 = view.findViewById(R.id.tv2_summary);
holder2.pic_url2 = view.findViewById(R.id.iv2);
view.setTag(holder2);
}else{
view = View.inflate(MainActivity.this, R.layout.item3, null);
holder3 = new ViewHolder3();
holder3.news_id3 = view.findViewById(R.id.tv3_id);
holder3.news_title3 = view.findViewById(R.id.tv3_title);
holder3.news_summary3 = view.findViewById(R.id.tv3_summary);
holder3.pic_url3 = view.findViewById(R.id.iv3);
view.setTag(holder3);
}
}else{
if(type == TYPE_ONE){
holder1 = (ViewHolder1) view.getTag();
}else if(type == TYPE_TWO){
holder2 = (ViewHolder2) view.getTag();
}else{
holder3 = (ViewHolder3) view.getTag();
}
}

// 根据不同的情况  把进行赋值
if(type == TYPE_ONE) {
holder1.news_id1.setText(list.get(position).getNews_id());
holder1.news_title1.setText(list.get(position).getNews_title());
holder1.news_summary1.setText(list.get(position).getNews_summary());
ImageLoader.getInstance().displayImage(list.get(position).getPic_url(),holder1.pic_url1);
<
bc39
/span>
}else if(type == TYPE_TWO){
holder2.news_id2.setText(list.get(position).getNews_id());
holder2.news_title2.setText(list.get(position).getNews_title());
holder2.news_summary2.setText(list.get(position).getNews_summary());
ImageLoader.getInstance().displayImage(list.get(position).getPic_url(),holder2.pic_url2);
}else{
holder3.news_id3.setText(list.get(position).getNews_id());
holder3.news_title3.setText(list.get(position).getNews_title());
holder3.news_summary3.setText(list.get(position).getNews_summary());
ImageLoader.getInstance().displayImage(list.get(position).getPic_url(),holder3.pic_url3);
}

return view;
}
}

public static class ViewHolder1{

TextView news_id1,news_title1,news_summary1;
ImageView pic_url1;
}

public static class ViewHolder2{

TextView news_id2,news_title2,news_summary2;
ImageView pic_url2;
}

public static class ViewHolder3{

TextView news_id3,news_title3,news_summary3;
ImageView pic_url3;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐