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