BaseActivity
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayoutResId());
initView(savedInstanceState);
initData();
}
protected abstract void initData();
protected abstract void initView(Bundle saveInstanceState);
protected abstract int getLayoutResId();
}
MyBaseAdapter
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import java.util.ArrayList;
import java.util.List;
public abstract class MyBaseAdapter extends BaseAdapter {
private List<T> mDatas;
protected Context mContext;
public MyBaseAdapter(Context mContext) {
this.mContext = mContext;
mDatas = new ArrayList<>();
}
@Override
public int getCount() {
return mDatas.size();
}
public void setDatas(List<T> datas) {
mDatas.clear();
if(datas != null) {
mDatas.addAll(datas);
}
notifyDataSetChanged();
}
public void addDatas(List<T> datas) {
if(datas != null) {
mDatas.addAll(datas);
notifyDataSetChanged();
}
}
@Override
public T getItem(int position) {
return mDatas.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
}
BaseFragment
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public abstract class BaseFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(getLayoutResId(), container, false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
initView(view);
initData();
}
protected abstract void initData();
protected abstract void initView(View view);
protected abstract int getLayoutResId();
}
NetUtil
import android.os.AsyncTask;
import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class NetUtil {
private static NetUtil instance;
private Gson gson;
private NetUtil() {
gson = new Gson();
}
public static NetUtil getInstance() {
if (instance == null) {
instance = new NetUtil();
}
return instance;
}
public interface Callback<T> {
void onSuccess(T t);
}
//异步任务
public void getRequest(String lujing, final Class clazz, final Callback callBack) {
new AsyncTask<String, Void, Object>() {
@Override
protected Object doInBackground(String... strings) {
return getRequest(strings[0], clazz);
}
@Override
protected void onPostExecute(Object o) {
callBack.onSuccess(o);
}
}.execute(lujing);
}
//网络解析
public <T> T getRequest(String urlPath, Class clazz) {
T t = (T) new Gson().fromJson(getRequest(urlPath), clazz);
return t;
}
//网络请求
public String getRequest(String urlPath) {
String result = "";
try {
//定义地址
URL url = new URL(urlPath);
//打开连接
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
//请求方法
urlConnection.setRequestMethod("GET");
//读取超时
urlConnection.setReadTimeout(5000);
//连接超时
urlConnection.setConnectTimeout(5000);
if (urlConnection.getResponseCode() == 200) {
result = stream2String(urlConnection.getInputStream());
}
} catch (Exception e) {
e.printStackTrace();
}
//return null;
return result;
}
//字节流转换为字符流
private String stream2String(InputStream inputStream) throws IOException {
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader buff = new BufferedReader(inputStreamReader);
StringBuilder builder = new StringBuilder();
for (String tmp = buff.readLine(); tmp != null; tmp = buff.readLine()) {
builder.append(tmp);
}
return builder.toString();
}
}