AsyncTask获取数据

public class Fragment02 extends Fragment {
    private static final String TAG = "Fragment02";
    private TextView name, address;




    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment02_layout, container, false);
        name = view.findViewById(R.id.fragment02_name);
        address = view.findViewById(R.id.fragment02_add);
        return view;
    }


    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        //1.请求网络
        /**
         * 记得要添加HttpClient的依赖库  百度
         */
        new MyTask().execute(HttpConfig.TWO_URL);
    }




    class MyTask extends AsyncTask<String, Void, String> {


        @Override
        protected String doInBackground(String... strings) {
            String url = strings[0];
            HttpClient client = new DefaultHttpClient();
            HttpGet get = new HttpGet(url);
            //执行
            try {
                HttpResponse response = client.execute(get);
                //状态码
                StatusLine statusLine = response.getStatusLine();
                if (statusLine.getStatusCode() == 200) {
                    HttpEntity entity = response.getEntity();
                    InputStream inputStream = entity.getContent();
                    //将流转成String
                    String json = CommenUtils.inputStream2String(inputStream);
                    Log.d(TAG, "run: " + json);
                    //发送
                    return json;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }


        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            Gson gson = new Gson();
            UserBean userBean = gson.fromJson(s, UserBean.class);
            //赋值
            name.setText(userBean.getData().getName());
            address.setText(userBean.getData().getAddr());
        }
    }


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Fragment中获取数据库数据,你需要执行以下步骤: 1. 确保你已经在你的应用程序中创建了SQLite数据库,并且你已经定义了一个合适的数据模型。例如,你可以使用Room库来简化这个过程。 2. 在你的Fragment中实现一个异步任务(AsyncTask)来查询数据库并获取数据。异步任务可以在后台线程中执行查询操作,避免在主线程上执行耗时操作导致应用程序卡顿。 3. 在异步任务中使用数据库访问对象(DAO)来查询数据库并获取数据。DAO是一个抽象接口,它定义了一组方法来执行数据库操作,例如查询、插入、更新和删除等。 4. 将查询结果返回到Fragment中,你可以使用回调函数或LiveData来实现这个过程。回调函数是一个函数指针,它可以在异步任务完成后调用。LiveData是一个观察者模式,它可以在数据发生变化时通知观察者。 下面是一个使用Room库在Fragment中查询数据库的示例代码: ```java public class MyFragment extends Fragment { private MyViewModel mViewModel; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.my_fragment, container, false); mViewModel = ViewModelProviders.of(this).get(MyViewModel.class); mViewModel.getLiveData().observe(this, new Observer<List<MyEntity>>() { @Override public void onChanged(@Nullable List<MyEntity> myEntities) { // Update UI with database data } }); return view; } private class MyViewModel extends AndroidViewModel { private MyDao mDao; private MutableLiveData<List<MyEntity>> mLiveData; public MyViewModel(Application application) { super(application); MyDatabase db = MyDatabase.getInstance(application); mDao = db.myDao(); mLiveData = new MutableLiveData<>(); loadData(); } public LiveData<List<MyEntity>> getLiveData() { return mLiveData; } private void loadData() { new AsyncTask<Void, Void, List<MyEntity>>() { @Override protected List<MyEntity> doInBackground(Void... voids) { return mDao.getAll(); } @Override protected void onPostExecute(List<MyEntity> myEntities) { mLiveData.setValue(myEntities); } }.execute(); } } } ``` 在这个示例代码中,我们在MyFragment中创建了一个MyViewModel对象,并观察它的LiveData对象。MyViewModel对象负责查询数据库并将结果传递给LiveData对象。LiveData对象在数据发生变化时通知观察者(MyFragment),从而更新UI。注意,在这个示例代码中,我们使用了异步任务来执行数据库查询操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值