美文网首页
An_ListView 多样展示

An_ListView 多样展示

作者: android_en | 来源:发表于2017-08-25 13:43 被阅读9次

MyApplication类:加载ImageLoader的实现
!!!!别忘了加权限和
在清单里加上MyApplication:

 <application
//name---->        
android:name="com.example.listview_3item.MyApplication"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
package com.example.listview_3item;

import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.DisplayImageOptions.Builder;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;

import android.app.Application;

public class MyApplication extends Application{
@Override
public void onCreate() {
    // TODO Auto-generated method stub
    DisplayImageOptions options = new DisplayImageOptions.Builder()
    .showImageOnLoading(R.drawable.ic_launcher)
    .displayer(new FadeInBitmapDisplayer(3000))
    .build();
    ImageLoaderConfiguration config = ImageLoaderConfiguration.createDefault(this);
    ImageLoader.getInstance().init(config);
    super.onCreate();

MainActivity 加载图片放到listview

package com.example.listview_3item;

import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import com.example.listview_3item.bean.Max;
import com.example.listview_3item.bean.news;
import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.ImageLoader;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;

public class MainActivity extends Activity {
List<news> list;
private MyAdapter myAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView lv=(ListView) findViewById(R.id.lv);
        getData();
        myAdapter = new MyAdapter();
        lv.setAdapter(myAdapter);
    }

    private void getData() {
        // TODO Auto-generated method stub
        new AsyncTask<String, String, String>() {

            @Override
            protected String doInBackground(String... params) {
                // TODO Auto-generated method stub
                initData();
                return null;
            }
            @Override
            protected void onPostExecute(String result) {
                // TODO Auto-generated method stub
                myAdapter.notifyDataSetChanged();
                super.onPostExecute(result);
            }
        }.execute();
    }

    protected void initData() {
        // TODO Auto-generated method stub
        try {
            URL url = new URL("http://169.254.122.215:8080/day10/news.json");
            HttpURLConnection conn=(HttpURLConnection) url.openConnection();
            int code = conn.getResponseCode();
            if(code==200){
                Gson gson = new Gson();
                Max m = gson.fromJson(new InputStreamReader(conn.getInputStream(),"GBK"), Max.class);
                list=new ArrayList<news>();
                list=m.getData();
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    class MyAdapter extends BaseAdapter{
        public static final int TPONE=0;
        public static final int TPTWO=1;
        public static final int TPTHREE=2;
        
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            if(list!=null){
                return list.size();
            }
            return 0;
        }
        
        //在使用多条目加载的时候    返回当前position对应的类型
        //************必须满足的条件   getItemViewType的返回值  必须要小于getViewTypeCount的返回值
        @Override
        public int getItemViewType(int position) {
            // TODO Auto-generated method stub
            if(list.get(position).getType()==10001){
                return TPONE;
            }else if(list.get(position).getType()==10002){
                return TPTWO;
            }else {
                return TPTHREE;
            }
            
        }

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


        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            ViewHolder0 holder0=null;
            ViewHolder1 holder1=null;
            ViewHolder2 holder2=null;
            int type=getItemViewType(position);
            if(convertView==null){
                if(type==TPONE){
                    convertView=View.inflate(MainActivity.this, R.layout.item0,null);
                    holder0=new ViewHolder0();
                    holder0.ivleft=(ImageView) convertView.findViewById(R.id.ivleft);
                    convertView.setTag(holder0);
                }else if(type==TPTWO){
                    convertView=View.inflate(MainActivity.this, R.layout.item1,null);
                    holder1=new ViewHolder1();
                    holder1.ivm=(ImageView) convertView.findViewById(R.id.ivm);
                    convertView.setTag(holder1);
                }else{
                    convertView=View.inflate(MainActivity.this, R.layout.item2,null);
                    holder2=new ViewHolder2();
                    holder2.ivright=(ImageView) convertView.findViewById(R.id.ivright);
                    convertView.setTag(holder2);
                }
            }else{
                if(type==TPONE){
                    holder0=(ViewHolder0) convertView.getTag();
                }else if(type==TPTWO){
                    holder1=(ViewHolder1) convertView.getTag();
                }else if(type==TPTHREE){
                    holder2=(ViewHolder2) convertView.getTag();
                }
            }
            if(type==TPONE){
                ImageLoader.getInstance().displayImage(list.get(position).getPic_url(), holder0.ivleft);
            }else if(type==TPTWO){
                ImageLoader.getInstance().displayImage(list.get(position).getPic_url(), holder1.ivm);
            }else if(type==TPTHREE){
                ImageLoader.getInstance().displayImage(list.get(position).getPic_url(), holder2.ivright);

            }
            return convertView;
        }
        
    }
    static class ViewHolder0{
        ImageView ivleft;
    }
    static class ViewHolder1{
        ImageView ivm;
    }
    static class ViewHolder2{
        ImageView ivright;
    }

    
    
}

布局 item0

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
<ImageView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/ivleft"
    android:src="@drawable/ic_launcher"
    />


</LinearLayout>

布局 item1

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
<ImageView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/ivm"
    android:layout_gravity="center_horizontal"
    android:src="@drawable/ic_launcher"
    />
</LinearLayout>

布局 item2

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    
<ImageView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/ivright"
    android:src="@drawable/ic_launcher"
    android:layout_alignParentRight="true"
    />
</RelativeLayout>

}
}

相关文章

  • An_ListView 多样展示

    MyApplication类:加载ImageLoader的实现!!!!别忘了加权限和在清单里加上MyApplica...

  • 推荐系统遇上深度学习(七十六)-CVR预估中的延迟反馈问题建模

    1、背景介绍 在展示广告场景中,有多种多样的计费方式,如按每次展示计费CPM、按每次点击计费CPC、以及按每次转化...

  • 自定义View之线性进度展示

    目前有很多APP都具有进度展示功能,而进度展示的效果多种多样,0.0就要看你们UI坑不坑了,有简单的,也有复杂的,...

  • 展会设计中展具辅助传达信息的功能解析

    展示道具多种多样,但是展示道具主要就是传播展品、展项的媒介,是信息传播的载体,它起到的说明效果在某些时刻甚至要超越...

  • 告诉大家几个做淘宝详情页的小技巧

    详情页的产品展示 1.多角度 ,2.颜色,3.局部多样化 4.细节 5.品质 6.文案并茂 ,无线端宝贝模特展示,...

  • 电子阅报栏的魅力

    面对高清高亮的显示屏幕,电子阅报栏的信息展示方式是多样化的,人们可以看到更加丰富多彩,更加清晰的信息展示方式,在过...

  • 8.1班小组共读成果展活动纪实

    经过为期三周的小组共读,经历重重困难,展示会如期举行。孩子们的展示形式多样,如诵读、情景剧、《朗读者》、歌曲、读后...

  • 8.2班小组共读成果展纪实

    经过为期三周的小组共读,经历重重困难,展示会如期举行。孩子们的展示形式多样,如诵读、情景剧、《朗读者》、歌曲、读后...

  • 男孩的悲伤

    今天上了三节课,在课堂上,我引导学生进行大胆自我展示,展示形式多样,可以是讲故事,唱歌,谁知说笑话等,目的是让学生...

  • Minio Bucket事件通告配置:MySQL

    1.概述 Minio可以监控Bucket及其下文件内容变更的events,并给出变更信息,展示变更信息的形式多样,...

网友评论

      本文标题:An_ListView 多样展示

      本文链接:https://www.haomeiwen.com/subject/zmqkrxtx.html