天天看點

使用List<實體對象>來自定義擴充卡

針對項目需要要進行自定義擴充卡來設計,主要是因為的是在掃描本地檔案,要建立對象來接受檔案的name和檔案的path,如果使用SimpleAdapter顯然是不滿足要求的,這裡傳遞的List集合形式不對,是以這裡使用自定義擴充卡來完成。

public void initData(){

    final List<VideoModel> videoList=getVideoFile(allVideoList, Environment.getExternalStorageDirectory());

    MyAdapter myAdapter=new MyAdapter($.getContext(),R.layout.line,videoList);

    videoListView.setAdapter(myAdapter);

    videoListView.setOnItemClickListener(new AdapterView.OnItemClickListener()

    {

        @Override

        public void onItemClick(AdapterView<?> parent, View view, int position,long id)

        {

                String filepath = videoList.get(position).getVideoPath();

                Intent intent = new Intent();

                intent.putExtra("filepath",filepath);

                intent.setClass($.getContext(), PlayActivity.class);

                startActivity(intent);

        }

    });

}

class MyAdapter extends BaseAdapter{

    private Context context;//上下文

    private int resourceId;//清單項的布局檔案

    private List<VideoModel> list3;

    public MyAdapter(Context context, int resourceId, List<VideoModel> list3) {

        this.context = context;

        this.resourceId = resourceId;

        this.list3 = list3;

    }

    @Override

    public int getCount() {

        int count=0;

        if(list3!=null){

            return list3.size();

        }

        return count;

    }

    @Override

    public Object getItem(int position) {

        return list3.get(position);

    }

    @Override

    public long getItemId(int position) {

        return position;

    }

    @Override

    public View getView(int position, ViewconvertView, ViewGroup parent) {

        View view=null;

        if(convertView!=null){

            view=convertView;

        }else{

            view = LayoutInflater.from(context).inflate(resourceId, parent,false);

        }

        VideoHolder holder =(VideoHolder) view.getTag();

        if(holder==null){

            holder=new VideoHolder();

            holder.textView=(TextView)view.findViewById(R.id.file_name);

            holder.image=(ImageView)view.findViewById(R.id.icon);

            view.setTag(holder);

        }

        holder.textView.setText(list3.get(position).getVideoName().toString());

        holder.image.setImageResource(R.drawable.file);

        return view;

    }

    class VideoHolder{

        TextView textView;

        ImageView image;

    }

}

繼續閱讀