ListView 关于Adapter 本地文件中解析json数据完整例子

第一步:布局文件

theme.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:background="@color/white"
        >

    <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:background="@color/yeyy_themeclor"
            >

        <ImageButton
                android:id="@+id/img_back"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ky_title_back"
                android:background="@color/lucency"
                android:layout_marginLeft="20dp"
                android:layout_centerVertical="true"
                android:visibility="invisible"
                />
        <TextView
                android:id="@+id/theme_tv_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="25dp"
                android:textColor="@color/white"
                android:layout_centerInParent="true"
                android:text="主题"
                />
    </RelativeLayout>
<ListView
        android:id="@+id/theme_listView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:divider="@color/yeyy_gray"
        android:dividerHeight="1dp"
        android:scrollbars="none"
        >

</ListView>
</LinearLayout>

theme_item_listview.xml

<?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="80dp"
                android:paddingLeft="15dp"
                android:paddingRight="15dp"
                android:id="@+id/theme_item_listview"
        >
    <!--<com.ncsyeyy.ncskayi.view.CircleImageView-->
        <ImageView
            android:id="@+id/theme_head_portrait"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:src="@drawable/theme_item_image"
            android:layout_centerInParent="true"
            android:layout_alignParentStart="true"
            />
    <LinearLayout
            android:id="@+id/ltheme_item_content"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="80dp"
            android:layout_marginLeft="40dp"
            android:layout_marginRight="40dp"
            android:paddingTop="5dp"
            android:paddingLeft="10dp"
            >

            <TextView
                    android:id="@+id/theme_tv_name"
                    android:layout_width="match_parent"
                    android:layout_height="30dp"
                    android:textSize="20sp"
                    android:text="主题"
                    android:gravity="center_vertical"
                    android:textColor="@color/black"
                    android:layout_marginTop="5dp"
                    />
            <TextView
                    android:id="@+id/theme_tv_content"
                    android:layout_width="match_parent"
                    android:layout_height="30dp"
                    android:textSize="15sp"
                    android:textColor="#ff919191"
                    android:text="轻松拥有公司会议所需的各种卡片"
                    android:maxLines="1"
                    android:ellipsize="end"
                    android:gravity="center_vertical"
                    />
    </LinearLayout>

    <ImageView
            android:id="@+id/theme_imageView_in"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/theme_go"
            android:layout_centerInParent="true"
            android:layout_alignParentRight="true"
            />

</RelativeLayout>

theme_details_weeding.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
    <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:background="@color/yeyy_themeclor">

        <ImageButton
                android:id="@+id/theme_details_weeding_back"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/back"
                android:background="@color/lucency"
                android:layout_marginLeft="10dp"
                android:layout_centerVertical="true"/>
        <TextView
                android:id="@+id/theme_details_weeding_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="25dp"
                android:textColor="@color/white"
                android:layout_centerInParent="true"
                android:text="婚庆系列"
                />
        <ImageButton
                android:id="@+id/theme_details_no"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/theme_details_no"
                android:background="#00000000"
                android:layout_alignParentEnd="true"
                android:layout_centerVertical="true"
                android:layout_marginTop="8dp"
                android:layout_marginRight="20px"/>
    </RelativeLayout>
    <RelativeLayout
            android:id="@+id/rlSearchFrameDelete"
            android:layout_width="fill_parent"
            android:layout_height="50dp"
            android:gravity="center_vertical"
            android:background="@color/yeyy_gray">

        <EditText android:id="@+id/etSearch"
                  android:layout_width="fill_parent"
                  android:layout_height="30dp"
                  android:singleLine="true"
                  android:background="@drawable/search_frame"
                  android:layout_marginRight="20dp"
                  android:layout_marginLeft="20dp"
                  android:textSize="12sp"
                  android:hint="搜索"/>

        <ImageView android:id="@+id/ivDeleteText"
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:layout_alignParentRight="true"
                   android:src="@drawable/delete"
                   android:layout_centerInParent="true"
                   android:paddingRight="20dp"
                   android:visibility="gone"/>

    </RelativeLayout>
    <ListView
            android:id="@+id/theme_details_weeding_listView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scrollbars="none"
            >

    </ListView>
</LinearLayout>

theme_item_details.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="200dp"
              android:id="@+id/theme_item_details"
        >
    <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            >
        <ImageView
                android:id="@+id/theme_item_details_head"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:src="@drawable/theme_item_image"
                android:layout_centerVertical="true"
                />
        <TextView
                android:id="@+id/theme_item_details_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="林晓峰"
                android:textSize="20dp"
                android:layout_toRightOf="@id/theme_item_details_head"
                android:layout_centerVertical="true"
                android:layout_marginLeft="5dp"
                />
        <CheckBox
                android:id="@+id/theme_item_details_collect"
                android:layout_width="36dp"
                android:layout_height="37dp"
                android:button="@drawable/collect"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:layout_marginLeft="8dp"
                android:gravity="center"
                />
        <View
                android:layout_width="1dp"
                android:layout_height="30dp"
                android:background="@color/yeyy_gray"
                android:layout_toRightOf="@id/theme_item_details_collect"
                android:layout_centerVertical="true"

                />
        <TextView
                android:id="@+id/theme_item_details_download_number_a"
                android:layout_width="wrap_content"
                android:layout_height="20dp"
                android:text="26"
                android:textSize="15dp"
                android:textColor="@color/color_red"
                android:layout_toLeftOf="@id/theme_item_details_collect"
                android:layout_centerVertical="true"
                android:layout_marginRight="5dp"
                android:gravity="center"
                />
        <TextView
                android:id="@+id/theme_item_details_download"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="15dp"
                android:text="下载"
                android:layout_toLeftOf="@id/theme_item_details_download_number_a"
                android:layout_centerVertical="true"
                android:layout_marginRight="5dp"
                android:gravity="center"
                />

    </RelativeLayout>
    <ImageView
            android:id="@+id/theme_item_details_works"
            android:layout_width="match_parent"
            android:layout_height="150dp"
            android:scaleType="fitXY"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:src="@drawable/forum_formwork_image"
            />
</LinearLayout>
第二步:对应的activity

ThemeActivity.java

package com.ncsyeyy.YeyyAdapterJSON;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.AssetManager;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.CheckBox;
import android.widget.ImageButton;
import android.widget.ListView;


import java.util.ArrayList;

/**
 * Created by yeyy on 7/10/2015.
 */
public class ThemeActivity extends Activity {
    View view;
    private ArrayList<ThemeItemView> themeList = new ArrayList<ThemeItemView>();
    private ListView themeListView;
    private String fileTheme = "theme.json";
    private ThemeListViewAdapter themeListViewAdapter = null;
    private Context context;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.theme);
        context = this;
        initView();
        initData();
    }

    public void initView() {
        themeListView = (ListView) findViewById(R.id.theme_listView);
        themeListView.setOnItemClickListener(new ItemClickListener());
    }

    //获取assets下的文件
    private void initData() {
        String json = ReaderFileTool.getLocalJson(this, fileTheme);//获取json数据
        themeList = JsonTool.setThemeData(context, json);//得到json数据,放进对应的控件
        themeListViewAdapter = new ThemeListViewAdapter(ThemeActivity.this, themeList);
        themeListView.setAdapter(themeListViewAdapter);//适配到listview上

    }

    class ItemClickListener implements AdapterView.OnItemClickListener {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent intent = new Intent();
            intent.setClass(ThemeActivity.this, ThemeWeedingActivity.class);
            startActivity(intent);
        }
    }

}
ThemeWeedingActivity.java

package com.ncsyeyy.YeyyAdapterJSON;

import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.AssetManager;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;

/**
 * 婚庆系列,作品列表
 * Created by yeyy on 7/17/2015.
 */
public class ThemeWeedingActivity extends Activity {

    private  ArrayList<ThemeItemDetailsListView> themeIDListView=new ArrayList<ThemeItemDetailsListView>();
    private  ArrayList<ThemeItemDetailsListView> themeIDListView1=new ArrayList<ThemeItemDetailsListView>();
    private ImageButton themeWeedingBut;
    private ListView themeWeedingLv;
    private Context context;
    private String fileName = "themeweeding.json";
    private ThemeItemDetailsListViewAdapter themeIDLVAdapter;
    public AssetManager manager;
    String str=null;
    private TextView weedingTitle;
    private static final String TAG = "====RefreshListByEditText_TAG====";
    private EditText etSearch;
    private static final int MSG_KEY = 0x1234;
    private Handler handler;
    private String json;

    @TargetApi(Build.VERSION_CODES.CUPCAKE)
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.theme_details_weeding);
        getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
        //从适配器ThemeListViewAdapter接收title数据
        weedingTitle = (TextView) findViewById(R.id.theme_details_weeding_title);
        context = this;
        Intent intent=getIntent();
        str=getIntent().getStringExtra("title");
        weedingTitle.setText(str);
        initView();
        initData();//data要在view初始化之后,不然会出现空指针异常
        btnWeedingBack();
        onClick();

    }

    private void initView() {
        themeWeedingBut = (ImageButton) findViewById(R.id.theme_details_weeding_back);
        themeWeedingLv = (ListView) findViewById(R.id.theme_details_weeding_listView);
        etSearch = (EditText) findViewById(R.id.etSearch);

    }

    private void initData() {
        json = ReaderFileTool.getLocalJson(this, fileName);
        //String json =  getLocalJson(fileName);
        Log.i("json", "json" + json);
        themeIDListView = JsonTool.setProData(context, json,str);
        Log.i("themeIDListView","themeIDListView"+themeIDListView.size());
        themeIDLVAdapter = new ThemeItemDetailsListViewAdapter(
                ThemeWeedingActivity.this, themeIDListView);
        themeWeedingLv.setAdapter(themeIDLVAdapter);
    }

    public void btnWeedingBack(){
        themeWeedingBut.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();

            }
        });
    }
//搜索功能的实现
    private void onClick(){
        etSearch.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                Log.d(TAG, "afterTextChanged");
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                Log.d(TAG, "onTextChanged");
                Log.w(TAG, "input.text=" + s.toString());
                Message msg = new Message();
                msg.what = MSG_KEY;
                Bundle data = new Bundle();
                data.putString("value", s.toString());
                msg.setData(data);
                handler.sendMessage(msg);
            }

            @Override
            public void afterTextChanged(Editable s) {
                Log.d(TAG, "afterTextChanged");
            }
        });
        handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                switch (msg.what) {
                    case MSG_KEY:
                        Log.i("value","value="+msg.getData().get("value").toString());
                        refreshListView(msg.getData().get("value").toString());
                }
            }
        };
    }
    private void refreshListView(String value) {//刷新listview
        if (value == null || value.trim().length() == 0){
            themeIDLVAdapter = new ThemeItemDetailsListViewAdapter(
                    ThemeWeedingActivity.this, themeIDListView);
            themeWeedingLv.setAdapter(themeIDLVAdapter);
        }
        ArrayList<String> tmpList = new ArrayList<String>();
        for (ThemeItemDetailsListView t : themeIDListView) {
               tmpList.add(t.getTvTName());
        }
        for(String s:tmpList)
        {
            Log.i("s.indexOf(value)","s.indexOf(value)"+s.indexOf(value));
            if (s.indexOf(value) >= 0) {
                themeIDListView1= JsonTool.setProPerson(context, json, str, value);
            }
        }
        if (value.equals("")){
            themeIDListView1= JsonTool.setProData(context, json, str);
        }
        themeIDLVAdapter = new ThemeItemDetailsListViewAdapter(
                ThemeWeedingActivity.this, themeIDListView1);
        themeWeedingLv.setAdapter(themeIDLVAdapter);
        themeWeedingLv.invalidateViews();
    }

}

第三步:对应的javaBean

ThemeItemView.java

package com.ncsyeyy.YeyyAdapterJSON;

/**
 * Created by yeyy on 7/16/2015.
 */
public class ThemeItemView {
    private int id;
    private String theme_icon;
    private String tv_theme;
    private String tv_detail;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTheme_icon() {
        return theme_icon;
    }

    public void setTheme_icon(String theme_icon) {
        this.theme_icon = theme_icon;
    }

    public String getTv_theme() {
        return tv_theme;
    }

    public void setTv_theme(String tv_theme) {
        this.tv_theme = tv_theme;
    }

    public String getTv_detail() {
        return tv_detail;
    }

    public void setTv_detail(String tv_detail) {
        this.tv_detail = tv_detail;
    }

    public ThemeItemView() {

    }
}
ThemeItemDetailsListView.java

package com.ncsyeyy.YeyyAdapterJSON;

import android.os.Parcel;
import android.os.Parcelable;

public class ThemeItemDetailsListView implements Parcelable {

	private String tvTName;
	private String ivTHead;
	private String ivTWorks;
	private int tvTDownloadNum;

	public ThemeItemDetailsListView() {
	}

	public String getTvTName() {
		return tvTName;
	}

	public void setTvTName(String tvTName) {
		this.tvTName = tvTName;
	}

	public String getIvTHead() {
		return ivTHead;
	}

	public void setIvTHead(String ivTHead) {
		this.ivTHead = ivTHead;
	}

	public String getIvTWorks() {
		return ivTWorks;
	}

	public void setIvTWorks(String ivTWorks) {
		this.ivTWorks = ivTWorks;
	}

	public int getTvTDownloadNum() {
		return tvTDownloadNum;
	}

	public void setTvTDownloadNum(int tvTDownloadNum) {
		this.tvTDownloadNum = tvTDownloadNum;
	}

	public static final Creator<ThemeItemDetailsListView>
			CREATOR = new Creator<ThemeItemDetailsListView>() {
		public ThemeItemDetailsListView createFromParcel(Parcel source) {
			ThemeItemDetailsListView themeDetailsListView = new ThemeItemDetailsListView();
			themeDetailsListView.tvTName = source.readString();
			themeDetailsListView.ivTHead = source.readString();
			themeDetailsListView.ivTWorks = source.readString();
			themeDetailsListView.tvTDownloadNum = source.readInt();
			return themeDetailsListView;
		}
		public ThemeItemDetailsListView[] newArray(int size) {
			return new ThemeItemDetailsListView[size];
		}
	};

	@Override
	public int describeContents() {
		return 0;
	}

	@Override
	public void writeToParcel(Parcel parcel, int flags) {
		parcel.writeString(tvTName);
		parcel.writeString(ivTHead);
		parcel.writeString(ivTWorks);
		parcel.writeInt(tvTDownloadNum);
	}
}

第四步:对应adapter

ThemeListViewAdapter.java

package com.ncsyeyy.YeyyAdapterJSON;

import android.content.Context;
import android.content.Intent;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
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.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;

/**
 * Created by yeyy on 7/16/2015.
 */
public class ThemeListViewAdapter extends BaseAdapter {
    private LayoutInflater mInflater = null;
    private Context context;
    private ArrayList<ThemeItemView> themeList;
    private String fileName = "themeimage";
    private String item_theme;


    public ThemeListViewAdapter(Context context, LayoutInflater mInflater, ArrayList<ThemeItemView> themeList) {
        this.context = context;
        this.mInflater = mInflater;
        this.themeList = themeList;
    }

    public ThemeListViewAdapter(Context context) {
        this.mInflater = LayoutInflater.from(context);
        notifyDataSetChanged();
    }

    public ThemeListViewAdapter(Context context, ArrayList<ThemeItemView> themeList) {
        this.context = context;
        this.mInflater = LayoutInflater.from(context);
        this.themeList = themeList;
        Log.i("as", themeList.size() + "");
        notifyDataSetChanged();
    }

    @Override
    public int getCount() {
        if (themeList == null) {
            return 0;
        }
        return themeList.size();
    }

    @Override
    public Object getItem(int position) {
        if (themeList == null) {
            return null;
        }
        return position;
    }

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

    @Override
    public View getView(final  int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        if (convertView == null) {
            holder = new ViewHolder();
            convertView = mInflater.inflate(R.layout.theme_item_listview, null);//布局填充器
        }
//        rl = (RelativeLayout) convertView.findViewById(R.id.theme_item_listview);
        holder.theme_icon = (ImageView) convertView.findViewById(R.id.theme_head_portrait);
        holder.tv_theme = (TextView) convertView.findViewById(R.id.theme_tv_name);
        holder.tv_detail = (TextView) convertView.findViewById(R.id.theme_tv_content);
        convertView.setTag(holder);

        String item_theme1 = themeList.get(position).getTv_theme().toString();
        String item_detail = themeList.get(position).getTv_detail();
        String item_icon = themeList.get(position).getTheme_icon();
        holder.tv_theme.setText(item_theme1);
        holder.tv_detail.setText(item_detail);
        String url = fileName + "/" + item_icon;//获取图片
//        Log.i("url", url);
        Bitmap bitmap = ReaderFileTool.getImageFromAssetsFile(context, url);//公共类解析图片,可以提出来反复使用,也可以如下面注释的一样写在///当前
//        Log.i("123", bitmap.toString());
        holder.theme_icon.setImageBitmap(bitmap);

        //item适配器中跳转到activity,activity来接收
        convertView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                item_theme = themeList.get(position).getTv_theme().toString();
//                String string=tv_theme.getText().toString();//空指针异常
                Intent intent = new Intent();
                intent.putExtra("title",item_theme);
                intent.setClass(context, ThemeWeedingActivity.class);
                context.startActivity(intent);
            }
        });
        return convertView;
    }

//    private Bitmap getImageFromAssetsFile(String url) {
//
//        Bitmap bitmap = null;
//        AssetManager assetManager = context.getAssets();
//        try {
//            InputStream inputStream = assetManager.open(url);
//            bitmap = BitmapFactory.decodeStream(inputStream);
//            inputStream.close();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        Log.i("bitmap", bitmap + "");
//        return bitmap;
//    }

    private class ViewHolder {
        public TextView tv_theme;
        public TextView tv_detail;
        public ImageView theme_icon;
    }
}
ThemeItemDetailsListViewAdapter.java

package com.ncsyeyy.YeyyAdapterJSON;

import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.*;

import java.util.ArrayList;

/**
 * 婚庆作品列表view adapter,可下载
 * Created by yeyy on 7/20/2015.
 */
public class ThemeItemDetailsListViewAdapter extends BaseAdapter {
    private LayoutInflater inflater;
    private ArrayList<ThemeItemDetailsListView> themeIDListView;
    private Context context;
    private String fileName = "themeimage";

    ImageView ivTHead;
    TextView tvTName;
    TextView tvTDownloadNum;
    CheckBox ivTCollect;
    ImageView ivTWorks;

    public ThemeItemDetailsListViewAdapter(Context context,
                                           ArrayList<ThemeItemDetailsListView> themeIDListView) {
        this.context = context;
        this.inflater = LayoutInflater.from(context);
        this.themeIDListView = themeIDListView;
        notifyDataSetChanged();
    }

    @Override
    public int getCount() {
        if (themeIDListView == null) {
            return 0;
        }
        return themeIDListView.size();
    }

    @Override
    public Object getItem(int position) {
        if (themeIDListView == null) {
            return null;
        }
        return position;
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = inflater.inflate(
                    R.layout.theme_item_details, null);
        }
        ivTHead = (ImageView) convertView.findViewById(R.id.theme_item_details_head);
        tvTName = (TextView) convertView.findViewById(R.id.theme_item_details_name);
        tvTDownloadNum = (TextView) convertView.findViewById(R.id.theme_item_details_download_number_a);

        ivTCollect = (CheckBox) convertView.findViewById(R.id.theme_item_details_collect);
        final CheckBox checkBox = ivTCollect;//注意
        ivTCollect.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (checkBox.isChecked()) {
                    Toast.makeText(context, "收藏成功", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(context, "取消收藏", Toast.LENGTH_SHORT).show();
                }
            }
        });
        ivTWorks = (ImageView) convertView.findViewById(R.id.theme_item_details_works);

        String item_head = themeIDListView.get(position).getIvTHead();
        String item_name = themeIDListView.get(position).getTvTName();
        String item_works = themeIDListView.get(position).getIvTWorks();
        int item_downloadNum = themeIDListView.get(position).getTvTDownloadNum();

        tvTName.setText(item_name);
        tvTDownloadNum.setText(item_downloadNum + "");//注意要转换成字符串
        String url = fileName + "/" + item_head;
        String url1 = fileName + "/" + item_works;

        Bitmap bitmap = ReaderFileTool.getImageFromAssetsFile(context, url);
        Bitmap bitmap1 = ReaderFileTool.getImageFromAssetsFile(context, url1);

        ivTHead.setImageBitmap(bitmap);
        ivTWorks.setImageBitmap(bitmap1);

//点击主题内作品列表时可以分享出去
        convertView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent sendIntent = new Intent();
                sendIntent.setAction(Intent.ACTION_SEND);//调用系统软件分享
                sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
                sendIntent.setType("text/plain");
                context.startActivity(sendIntent);
            }
        });
        return convertView;
    }
}
关于adapter

(1)获得布局文件中的控件findViewById,注意listview重复使用的问题

(2)找到布局文件的位置get,转换成字符串,String item_head = themeIDListView.get(position).getIvTHead();

(3)set内容进去,ivTHead.setImageBitmap(bitmap);


关于读取文件的json数据公共类,ReaderFileTool类

package com.ncsyeyy.YeyyAdapterJSON;

import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

/**
 * 读取文件的json数据公共类
 * Created by yeyy on 7/20/2015.
 */
public class ReaderFileTool {
 private static AssetManager manager=null;
    public static String getLocalJson(Context context,String fileName){


        manager = context.getAssets();
        StringBuilder sBuilder = new StringBuilder();
        try {
            InputStream inputStream = manager.open(fileName);
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    inputStream));
            String line = "";//?
            while ((line = reader.readLine()) != null) {
                sBuilder.append(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return sBuilder.toString();


    }
//读取json图片转换成字符串
    public static Bitmap getImageFromAssetsFile(Context context,String url){
        Bitmap bitmap=null;
        AssetManager assetManager=context.getAssets();
        try {
            InputStream inputStream=assetManager.open(url);
            bitmap= BitmapFactory.decodeStream(inputStream);
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Log.i("bitmap",bitmap+"");

        return bitmap;

    }
}
把json数据放进对应控件的公共类JsonTool类

package com.ncsyeyy.YeyyAdapterJSON;

import android.content.Context;
import android.content.res.AssetManager;
import android.util.Log;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;

/**
 * Created by yeyy on 7/20/2015.
 */
public class JsonTool {
    public static AssetManager manager;
    private static ArrayList<ThemeItemView> themeList;
    private static ArrayList<ThemeItemDetailsListView> themeIDListView;



    public static ArrayList<ThemeItemView> setThemeData(Context context, String json) {
        themeList = new ArrayList<ThemeItemView>();
        try {
            JSONObject jsonObject = new JSONObject(json);
            JSONArray array = jsonObject.getJSONArray("theme");
            for (int i = 0; i < array.length(); i++) {
                JSONObject object = array.getJSONObject(i);
                ThemeItemView themeItemView = new ThemeItemView();
                themeItemView.setId(object.getInt("id"));
                themeItemView.setTheme_icon(object.getString("theme_icon"));
                themeItemView.setTv_theme(object.getString("tv_theme"));
                themeItemView.setTv_detail(object.getString("tv_detail"));
                themeList.add(themeItemView);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return themeList;
    }

    public static ArrayList<ThemeItemDetailsListView> setProData(Context context, String json, String str) {
        try {
            themeIDListView = new ArrayList<ThemeItemDetailsListView>();
            JSONObject jsonObject = new JSONObject(json);
            //把解析的json文件名写活
            JSONArray array = jsonObject.getJSONArray(str);
            for (int i = 0; i < array.length(); i++) {
                JSONObject object = array.getJSONObject(i);
                ThemeItemDetailsListView themeDetailsListView = new ThemeItemDetailsListView();
                themeDetailsListView.setTvTName(object.getString("tvTName"));
                themeDetailsListView.setIvTHead(object.getString("ivTHead"));
                themeDetailsListView.setIvTWorks(object.getString("ivTWorks"));
                themeDetailsListView.setTvTDownloadNum(object.getInt("tvTDownloadNum"));
                themeIDListView.add(themeDetailsListView);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return themeIDListView;
    }
    public static ArrayList<ThemeItemDetailsListView> setProPerson(Context context, String json, String str,String name) {
        try {
            themeIDListView = new ArrayList<ThemeItemDetailsListView>();
            JSONObject jsonObject = new JSONObject(json);
            //把解析的json文件名写活
            JSONArray array = jsonObject.getJSONArray(str);
            for (int i = 0; i < array.length(); i++) {
                JSONObject object = array.getJSONObject(i);
                ThemeItemDetailsListView themeDetailsListView = new ThemeItemDetailsListView();
                themeDetailsListView.setTvTName(object.getString("tvTName"));
                themeDetailsListView.setIvTHead(object.getString("ivTHead"));
                themeDetailsListView.setIvTWorks(object.getString("ivTWorks"));
                themeDetailsListView.setTvTDownloadNum(object.getInt("tvTDownloadNum"));
                Log.i("themeDetailsListView.getTvTName()",themeDetailsListView.getTvTName());
                Log.i("name",name);
                if(themeDetailsListView.getTvTName().equals(name)){
                    themeIDListView.add(themeDetailsListView);
                }else {
                    Toast.makeText(context,"没有你要查询的名字!", Toast.LENGTH_LONG).show();
                }

            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return themeIDListView;
    }
解析对象,上面两种解析数组,注意不同之处
//    public static MeView setMeData(Context context,String json){
//        MeView meV=new MeView();
//        try {
//            JSONObject jsonObject=new JSONObject(json);
//              JSONObject object=jsonObject.getJSONObject("user");
//                meV.setId(object.getInt("id"));
//                meV.setMe_head(object.getString("me_head"));
//                meV.setMe_point(object.getInt("me_point"));
//                meV.setMe_download(object.getInt("me_download"));
//                meV.setMe_collect(object.getInt("me_collect"));
//        } catch (JSONException e) {
//            e.printStackTrace();
//        }
//        return meV;
//    }
}


代码仍有不完善的地方,大家互相学习进步了

源码下载地址:http://download.csdn.net/detail/csdnyuandaimaxuexi/8986007



































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值