Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在adapter中,我需要放置解析数据数组,即,如果我像MyAdapter=new MyAdapter(新字符串[]{LOndon";,“NYC";})那样传递数据;它通过了_Android - Fatal编程技术网

Android 在adapter中,我需要放置解析数据数组,即,如果我像MyAdapter=new MyAdapter(新字符串[]{LOndon";,“NYC";})那样传递数据;它通过了

Android 在adapter中,我需要放置解析数据数组,即,如果我像MyAdapter=new MyAdapter(新字符串[]{LOndon";,“NYC";})那样传递数据;它通过了,android,Android,在适配器中,我需要放置解析数据的数组,也就是说,如果我像 MyAdapter adapter = new MyAdapter(new String[]{"LOndon","NYC"}); 它通过了。但解析的数组xyz未在适配器中传递。 从适配器中,我需要在RecyclerView和CardView中显示数据。如何通过Async传递解析的数据 public class BlankFragment extends Fragment { public String[] xyz; R

在适配器中,我需要放置解析数据的数组,也就是说,如果我像

MyAdapter adapter = new MyAdapter(new String[]{"LOndon","NYC"});
它通过了。但解析的数组
xyz
未在适配器中传递。 从适配器中,我需要在
RecyclerView
CardView
中显示数据。如何通过
Async
传递解析的数据

public class BlankFragment extends Fragment {

    public String[] xyz;
    RecyclerView rv;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        new http().execute();

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment

       final View rootView = inflater.inflate(R.layout.fragment_blank, container, false);

        //RecyclerView rv;
        rv = (RecyclerView) rootView.findViewById(R.id.rv_recycler_view);
        rv.setHasFixedSize(true);

        LinearLayoutManager llm = new LinearLayoutManager(getActivity());
        rv.setLayoutManager(llm);

        return rootView;
    }

    class http extends AsyncTask<URL, String, String> {

        public String xxx="";

        @Override
        protected String doInBackground(URL... urls) {
            HttpURLConnection connection = null;

            BufferedReader reader = null;
            try {
                URL url = new URL("http://api.icndb.com/jokes/random/10");

                connection = (HttpURLConnection) url.openConnection();
                connection.connect();

                InputStream stream = connection.getInputStream();
                reader = new BufferedReader(new InputStreamReader(stream));
                StringBuffer buffer = new StringBuffer();
                 String line = "";
                while ((line = reader.readLine()) != null) {

                    buffer.append(line);
                }
                String finalJson = buffer.toString();
                JSONObject parentObject = new JSONObject(finalJson);
                JSONArray parentArray = parentObject.getJSONArray("value");
                for (int i = 0; i < parentArray.length(); i++) {
                    JSONObject jsonObject = parentArray.getJSONObject(i);

                    String name = jsonObject.getString("joke");
                    xxx += name ;

                }
                return xxx;

            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (JSONException e) {
                e.printStackTrace();
            } finally {
                if (connection != null) {
                    connection.disconnect();
                }
                try {
                    if (reader != null) {
                        reader.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return null;
        }

        @Override
        public void onPostExecute(String result) {
            super.onPostExecute(result);
            String data = xxx;
            xyz = " ".split(xxx);
            MyAdapter adapter = new MyAdapter(xyz);

            rv.setAdapter(adapter);

        }
    }
}
公共类BlankFragment扩展了Fragment{
公共字符串[]xyz;
回收视图rv;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
新建http().execute();
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
最终视图rootView=充气机。充气(R.layout.fragment_blank,container,false);
//回收视图rv;
rv=(RecyclerView)rootView.findviewbyd(R.id.rv\u recycler\u视图);
rv.setHasFixedSize(真);
LinearLayoutManager llm=新的LinearLayoutManager(getActivity());
rv.setLayoutManager(llm);
返回rootView;
}
类http扩展异步任务{
公共字符串xxx=“”;
@凌驾
受保护的字符串doInBackground(URL…URL){
HttpURLConnection=null;
BufferedReader reader=null;
试一试{
URL=新URL(“http://api.icndb.com/jokes/random/10");
connection=(HttpURLConnection)url.openConnection();
connection.connect();
InputStream=connection.getInputStream();
reader=新的BufferedReader(新的InputStreamReader(流));
StringBuffer=新的StringBuffer();
字符串行=”;
而((line=reader.readLine())!=null){
buffer.append(行);
}
字符串finalJson=buffer.toString();
JSONObject parentObject=新的JSONObject(finalJson);
JSONArray parentArray=parentObject.getJSONArray(“值”);
对于(int i=0;i
在MyAdapter中添加此

public MyAdapter(String[] xyz){
  this.xyz=xyz
}
编辑

我稍微修改了你的代码。检查它是否有效

public class BlankFragment extends Fragment {

public String[] xyz;
RecyclerView rv;
MyAdapter mAdapter;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    new http().execute();

}




@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                     Bundle savedInstanceState) {
// Inflate the layout for this fragment

    final View rootView = inflater.inflate(R.layout.fragment_blank,   container, false);

   //RecyclerView rv;
    rv = (RecyclerView) rootView.findViewById(R.id.rv_recycler_view);
    rv.setHasFixedSize(true);

    LinearLayoutManager llm = new LinearLayoutManager(getActivity());
    rv.setLayoutManager(llm);
    mAdapter = new MyAdapter(xyz);
    rv.setAdapter(mAdapter);

    return rootView;
}


   class http extends AsyncTask<URL, String, String> {


        public String xxx="";


   @Override
    protected String doInBackground(URL... urls) {
        HttpURLConnection connection = null;


        BufferedReader reader = null;
        try {
            URL url = new URL("http://api.icndb.com/jokes/random/10");

            connection = (HttpURLConnection) url.openConnection();
            connection.connect();

            InputStream stream = connection.getInputStream();
            reader = new BufferedReader(new InputStreamReader(stream));
            StringBuffer buffer = new StringBuffer();
             String line = "";
            while ((line = reader.readLine()) != null) {

                buffer.append(line);
            }
            String finalJson = buffer.toString();
            JSONObject parentObject = new JSONObject(finalJson);
            JSONArray parentArray = parentObject.getJSONArray("value");
            for (int i = 0; i < parentArray.length(); i++) {
                JSONObject jsonObject = parentArray.getJSONObject(i);

                String name = jsonObject.getString("joke");
                xxx += name ;


            }
            return xxx;


        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        } finally {
            if (connection != null) {
                connection.disconnect();
            }
            try {
                if (reader != null) {
                    reader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    @Override
    public void onPostExecute(String result) {
        super.onPostExecute(result);
        String data = xxx;
        xyz = " ".split(xxx);
        mAdapter.addItems(xyz);//Create a method in the adapter
        notifyDataSetChanged();


    }
}}
公共类BlankFragment扩展了Fragment{
公共字符串[]xyz;
回收视图rv;
MyAdapter mAdapter;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
新建http().execute();
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
最终视图rootView=充气机。充气(R.layout.fragment_blank,container,false);
//回收视图rv;
rv=(RecyclerView)rootView.findviewbyd(R.id.rv\u recycler\u视图);
rv.setHasFixedSize(真);
LinearLayoutManager llm=新的LinearLayoutManager(getActivity());
rv.setLayoutManager(llm);
mAdapter=新的MyAdapter(xyz);
rv.设置适配器(mAdapter);
返回rootView;
}
类http扩展异步任务{
公共字符串xxx=“”;
@凌驾
受保护的字符串doInBackground(URL…URL){
HttpURLConnection=null;
BufferedReader reader=null;
试一试{
URL=新URL(“http://api.icndb.com/jokes/random/10");
connection=(HttpURLConnection)url.openConnection();
connection.connect();
InputStream=connection.getInputStream();
reader=新的BufferedReader(新的InputStreamReader(流));
StringBuffer=新的StringBuffer();
字符串行=”;
而((line=reader.readLine())!=null){
buffer.append(行);
}
字符串finalJson=buffer.toString();
JSONObject parentObject=新的JSONObject(finalJson);
JSONArray parentArray=parentObject.getJSONArray(“值”);
对于(int i=0;i