asyncTask Handler

//适配器
public class MyAdapter extends BaseAdapter {

**private Context mContext;
private List<MyData.DataBean> mlist;
public MyAdapter(Context mContext, List<MyData.DataBean> mlist) {
    this.mContext = mContext;
    this.mlist = mlist;
}
public void setList(List<MyData.DataBean> list) {
    this.mlist = list;
    notifyDataSetChanged();
}**

@Override
public int getCount() {
    return mlist.isEmpty()?0:mlist.size();
}

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

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder viewHolder = null;
    if (convertView == null) {
        viewHolder = new ViewHolder();
        convertView = View.inflate(mContext, R.layout.listview_item, null);
        viewHolder.mText = convertView.findViewById(R.id.Title_Text);
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }
    viewHolder.mText.setText(mlist.get(position).getNews_title() + "");
    return convertView;
}
class ViewHolder {
    private TextView mText;
}

//MainActivity
*****asynctask
public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private String mUrl = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
private Button getdata;
private ListView mainlv;
private List<MyData.DataBean> mlist=new ArrayList<>();
private MyAdapter adapter;
private Uri uri;
private ContentResolver resolver;

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

    //初始化
    initView();
    adapter = new MyAdapter(MainActivity.this,mlist);
    mainlv.setAdapter(adapter);
    //ContentResolver
    resolver = getContentResolver();
    uri = Uri.parse("content://com.example.contentProvider.provider.MyProvider/news");
    //点击 弹出AlertDiolog 删除
    mainlv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
            AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
            builder.setTitle("确认要删除吗?");
            builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    resolver.delete(uri,"name=?",new String[]{mlist.get(position).toString()});
                    mlist.remove(position);
                    adapter.notifyDataSetChanged();

                }
            });
            builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {

                }
            });
            AlertDialog dialog = builder.create();
            dialog.show();
        }
    });
}

private void initView() {
    getdata = findViewById(R.id.Get_data);
    mainlv = findViewById(R.id.Main_lv);
    getdata.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    switch (v.getId()){
        case R.id.Get_data:
            new MyTask().execute(mUrl);
            break;
    }
}
class MyTask extends AsyncTask<String,Void,List<MyData.DataBean>>{

    @Override
    protected List<MyData.DataBean> doInBackground(String... strings) {

        try {
            URL url=new URL(strings[0]);
            HttpURLConnection connection=(HttpURLConnection)url.openConnection();
            if (connection.getResponseCode()==200){
                InputStream stream = connection.getInputStream();
                String str = getStr(stream);
                Gson gson=new Gson();
                MyData myData = gson.fromJson(str, MyData.class);
                mlist=myData.getData();
                for (int i=0;i<mlist.size();i++){
                    ContentValues values=new ContentValues();
                    values.put("name",mlist.get(i).getNews_title().toString());
                    resolver.insert(uri,values);
                }
                return mlist;
            }

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }

    @Override
    protected void onPostExecute(List<MyData.DataBean> dataBeans) {
        super.onPostExecute(dataBeans);

        adapter.setList((List<MyData.DataBean>) dataBeans);
    }
}
private String getStr(InputStream stream) throws IOException {
    BufferedReader reader=new BufferedReader(new InputStreamReader(stream));
    StringBuffer sb=new StringBuffer();
    String con=null;
    while ((con=reader.readLine())!=null){
        sb.append(con);
    }
    return sb.toString();
}

}
//Handler*
public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private String Url="https://suggest.taobao.com/sug?code=utf-8&q=%E6%89%8B%E6%9C%BA";
private Button getdata;
private ListView mainlv;
private List<List<String>> mlist=new ArrayList<>();
private MyAdapter adapter;

private Handler handler=new Handler(){
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what){
            case 0:

// mlist.addAll((List<List>)msg.obj);
adapter.setList((List<List>)msg.obj);
break;
}

    }
};

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

    initView();
    adapter = new MyAdapter(mlist, MainActivity.this);
    mainlv.setAdapter(adapter);
}

private void initView() {
    getdata = findViewById(R.id.Get_data);
    getdata.setOnClickListener(this);
    mainlv = findViewById(R.id.Main_lv);
}

@Override
public void onClick(View v) {
    switch (v.getId()){
        case R.id.Get_data:
            getData();
            break;
    }
}

private void getData() {
    new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                String s = Utils.get(Url);
                Gson gson=new Gson();
                MyData data = gson.fromJson(s, MyData.class);
                handler.sendMessage(handler.obtainMessage(0,data.getResult()));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }).start();
}

}
}//******Utils类
public class Utils {

public static String get(String urlStr) throws Exception {
    URL url=new URL(urlStr);
    HttpURLConnection connection=(HttpURLConnection)url.openConnection();
    connection.setRequestMethod("GET");
    connection.setConnectTimeout(5000);
    InputStream stream = connection.getInputStream();
    String inm = getInputStrea(stream);
    return inm;
}

private static String getInputStrea(InputStream stream) throws IOException {

    BufferedReader reader=new BufferedReader(new InputStreamReader(stream));
    StringBuffer sb=new StringBuffer();
    String con=null;
    while ((con=reader.readLine())!=null){
        sb.append(con);
    }
    return sb.toString();
}

}

猜你喜欢

转载自blog.csdn.net/qq_43603312/article/details/83719338