网络请求

浪徒 2017-08-25 10:24:04
if(isOnline()) {
//有网,联网请求数据
getData();
}else{
//弹出提示对话框
showDialog();
}
}
private void showDialog(){
AlertDialog.Builder builder =new AlertDialog.Builder(this);
builder.setMessage("你确定联网");
builder.setNegativeButton("取消",null);
builder.setPositiveButton("确定.0", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {

//跳转网络设置界面
startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));

}
});
builder.create().show();
}

public boolean isOnline(){
ConnectivityManager conn = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = conn.getActiveNetworkInfo();

return (info !=null && info.isConnected());
}


XListView
//布局
<com.limxing.xlistview.view.XListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent">

</com.limxing.xlistview.view.XListView>

<ImageView
android:id="@+id/iv"
android:layout_width="match_parent"
android:layout_height="150dp" />
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="100dp" />

public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener{

private XListView xListView;
private MyBaseAdapter adapter;
private int pageIndex = 1;
private boolean flag;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
xListView = (XListView) findViewById(R.id.list);
xListView.setPullLoadEnable(true);
xListView.setXListViewListener(this);
public void getData(){
getNetWorkData("http://shouyoutoutiao.app.17wanba.com/toutiao/get_list");
}

public void getNetWorkData(String menu){
new AsyncTask<String,Void,String>(){


@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if(s==null){
return;
}

Gson gson = new Gson();
Beane beane = gson.fromJson(s, Beane.class);
List<Beane.DataBean> data = beane.getData();
if(adapter==null){
adapter =new MyBaseAdapter(MainActivity.this,data);

xListView.setAdapter(adapter);
}else {
adapter.loadMore(data,flag);
}
}

@Override
protected String doInBackground(String... params) {
try {
URL url1 = new URL(params[0]);
HttpURLConnection connection = (HttpURLConnection) url1.openConnection();
connection.setRequestMethod("GET");
connection.setReadTimeout(5000);
connection.setConnectTimeout(5000);
int code = connection.getResponseCode();
if(code==200){
InputStream inputStream = connection.getInputStream();
return StreamTool.readFromNetWork(inputStream);
}
} catch (Exception e) {
e.printStackTrace();
}

return null;
}
}.execute(menu);
}

@Override
public void onRefresh() {
flag =true;
++pageIndex;
getData();
xListView.stopRefresh(true);
}

@Override
public void onLoadMore() {
flag=false;
++pageIndex;
getData();
xListView.stopLoadMore();
}
}



//适配器
public class MyBaseAdapter extends BaseAdapter {
private Context context;
private List<Beane.DataBean>list;
public MyBaseAdapter(Context context,List<Beane.DataBean>list){
this.context = context;
this.list = list;
}

public void loadMore(List<Beane.DataBean> datas ,boolean flag) {
for (Beane.DataBean dataBean:datas) {
if (flag) {
list.add(0, dataBean);
}else {
list.add(dataBean);
}
}
notifyDataSetChanged();
}

@Override
public int getCount() {
return list!=null?list.size():0;
}

@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 convertView, ViewGroup parent) {
if(convertView==null){
convertView = convertView.inflate(context,R.layout.item,null);
}
ImageView imageView = (ImageView) convertView.findViewById(R.id.iv);
TextView textView = (TextView) convertView.findViewById(R.id.tv);
textView.setText(list.get(position).getTitle());
List<Beane.DataBean.ImgBean> imgBeen = list.get(position).getImg();
ImageLoader.getInstance().displayImage(imgBeen.get(0).getUrl(),imageView,MyApplication.getOptions());

return convertView;
}
}

MyApplication

public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
String path= Environment.getExternalStorageDirectory()+"sd5454c";
File file = new File(path);
ImageLoaderConfiguration image = new ImageLoaderConfiguration.Builder(this)
.threadPriority(3)
.threadPoolSize(100)
.memoryCacheExtraOptions(200,200)
.memoryCacheSize(2*1024*1024)
.diskCache(new UnlimitedDiskCache(file))
.diskCacheFileNameGenerator(new Md5FileNameGenerator())
.diskCacheSize(50*1024*1024)
.build();
ImageLoader.getInstance().init(image);
}
public static DisplayImageOptions getOptions(){
DisplayImageOptions option = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.showImageForEmptyUri(R.mipmap.ic_empty)
.showImageOnFail(R.mipmap.ic_error)
.showImageOnLoading(R.mipmap.loading)
.build();


return option;
}
}


public class StreamTool {
public static String readFromNetWork(InputStream is){

try {
ByteArrayOutputStream boas = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len=is.read(buffer))!=-1){
boas.write(buffer,0,len);
}
return boas.toString();
} catch (Exception e) {
e.printStackTrace();
}

return null;


}

}

...全文
295 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

790

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 其他移动相关
社区管理员
  • 移动开发其他问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧