获取并下载JSON文件内容(直接在服务器的URL读取JSON文件)
MyAdapter3类:
public class MyAdapter3 extends BaseAdapter {
private Context context;
private List<User> it;
public MyAdapter3(Context context, List<User> it) {
this.context = context;
this.it = it;
}
@Override
public int getCount() {
return it.size();
}
@Override
public Object getItem(int position) {
return it.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//加载构造XML的核心类
LayoutInflater layoutInflater = LayoutInflater.from(context);
//绑定title.xml
View view = layoutInflater.inflate(R.layout.title1, null);
//绑定控件
TextView nameText = view.findViewById(R.id.textView3);
TextView ageText = view.findViewById(R.id.textView4);
//获取值
nameText.setText(it.get(position).getName());
ageText.setText(""+ it.get(position).getAge());
return view;
}
}
JsonActivity类:
public class JsonActivity extends Activity{
private List<User> it;
private MyHandle handler;
private ListView listView2;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.index);
listView2=findViewById(R.id.ListView111);
it=new ArrayList<User>();
MyThread myThread = new MyThread();
handler = new MyHandle();
myThread.start();
}
//后台线程
class MyThread extends Thread{
@Override
public void run() {
super.run();
try {
//获取JSON文件地址
URL url = new URL("http://192.168.1.107:8080/Zhenai/hg.json");
//通过URL获得connection
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//通过connection获得流
InputStream is = connection.getInputStream();
String neirong = "";
int data = 0;
//读取文件
while ((data = is.read()) != -1) {
neirong += (char) data;
}
//创建JSONArray
JSONArray array = new JSONArray(neirong);
//循环遍并添加到集合
for (int i = 0; i < array.length(); i++) {
JSONObject obj = array.getJSONObject(i);
int id = obj.getInt("id");
String name = obj.getString("name");
int age = obj.getInt("age");
User user = new User(id, name, age);
it.add(user);
}
//跳转到handler处理
handler.sendMessage(new Message());
}catch (Exception e){
}
}
}
//前台线程
class MyHandle extends Handler{
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
//跳转到MyAdapterJSON处理
listView2.setAdapter(new MyAdapterJSON(JsonActivity.this,it));
}
}
//Adapter
class MyAdapterJSON extends MyAdapter3{
//让MyAdapterJSON继承MyAdapter3类,获得其类的信息
public MyAdapterJSON(Context context, List<User> it) {
super(context, it);
}
}
}