如何解析JSON并设置为in control。ListView或RecyclerView并单击该项目可以在android中启动另一项活动?
如何解析JSON并设置为in control。ListView或RecyclerView并单击该项目可以在android中启动另一项活动如何解析JSON并设置为in control。ListView或RecyclerView并单击该项目可以在android中启动另一项活动?,android,json,listview,Android,Json,Listview,如何解析JSON并设置为in control。ListView或RecyclerView并单击该项目可以在android中启动另一项活动 假设我们使用json(beta.json generator.com/api/json/get/VJ9snXcFG)打印列表视图中的所有标题。下一个标题是单击打开json中的第一个url(beta.json generator.com/api/json/get/VJ9snXcFG),第二个标题是单击打开json上的第二个url(beta.json gener
假设我们使用json(beta.json generator.com/api/json/get/VJ9snXcFG)打印列表视图中的所有标题。下一个标题是单击打开json中的第一个url(beta.json generator.com/api/json/get/VJ9snXcFG),第二个标题是单击打开json上的第二个url(beta.json generator.com/api/json/get/VJ9snXcFG)依此类推,使用改型解析JSON。下面是一个很好的例子: 在RecyclerView中,在onBindViewHolder函数中添加一个onClicklistener,并在那里开始您的活动 例如: Json包含如下数据:
[{"id":302,"latitude":-23.725,"longitude":34.2773,"place":"Panda Mozambik null"},{"id":312,"latitude":46.7681,"longitude":20.8186,"place":"Kondoros Magyarország null"},{"id":322,"latitude":8,"longitude":3,"place":"rr"}]
public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ItemViewHolder> {
public final List<Data> items;
public ItemAdapter() {
items = new ArrayList<>();
}
@Override
public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView =
LayoutInflater.from(parent.getContext()).
inflate(R.layout.item_recyclerview, parent, false);
ItemViewHolder viewHolder = new ItemViewHolder(itemView);
return viewHolder;
}
@Override
public void onBindViewHolder(ItemViewHolder holder, int position) {
Data item = items.get(position);
holder.longitude.setText(Float.toString(item.longitude));
holder.latitude.setText(Float.toString(item.latitude));
holder.place.setText(item.place);
holder.place.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(),"Clicked",Toast.LENGTH_LONG).show();
}
});
}
public void addItem(Data item) {
items.add(item);
notifyItemInserted(items.size() - 1);
}
@Override
public int getItemCount() {
return items.size();
}
public void update(List<Data> itemsrec) {
items.clear();
items.addAll(itemsrec);
notifyDataSetChanged();
}
public class ItemViewHolder extends RecyclerView.ViewHolder {
TextView place;
TextView longitude;
TextView latitude;
public ItemViewHolder(View itemView) {
super(itemView);
place = (TextView) itemView.findViewById(R.id.place);
longitude = (TextView) itemView.findViewById(R.id.longitude);
latitude = (TextView) itemView.findViewById(R.id.latitude);
}
}
数据类:
public class Data {
public int id;
public String place;
public float longitude;
public float latitude;
public Data(){}
}
内塔皮
public interface NetApi {
@GET("/")
Call<List<Data>> getData();
}
公共接口NetApi{
@获取(“/”)
调用getData();
}
在活动中:
private Retrofit retrofit;
private NetApi netApi;
private RecyclerView recyclerView;
ItemAdapter adapter;
public List<Data> items = new ArrayList<Data>();
private static final String ENDPOINT_ADDRESS = "https://endpoint.com/";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
retrofit = new Retrofit.Builder().baseUrl(ENDPOINT_ADDRESS).client(new OkHttpClient.Builder().build()).addConverterFactory(GsonConverterFactory.create()).build();
netApi = retrofit.create(NetApi.class);
initRecycleView()
getData();
}
public void getData() {
netApi.getData().enqueue(new Callback<List<Data>>() {
@Override
public void onResponse(Call<List<Data>> call, Response<List<Data>> response) {
if (response.isSuccessful()) {
Log.d(TAG, response.body().toString());
items = new ArrayList<Data>((response.body()));
adapter.update(items);
} else {
Toast.makeText(MainActivity.this, "Error: " + response.message(), Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<List<Data>> call, Throwable t) {
}
});
}
private void initRecycleView() {
recyclerView = (RecyclerView) view.findViewById(R.id.MainRecyclerView);
adapter = new ItemAdapter();
recyclerView.setLayoutManager(new LinearLayoutManager(view.getContext()));
recyclerView.setAdapter(adapter);
}
私人改装;
私有NetApi NetApi;
私人回收站;
项目适配器;
public List items=new ArrayList();
私有静态最终字符串终结点_地址=”https://endpoint.com/";
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
改装=新建改装.Builder().baseUrl(端点地址).client(新建OkHttpClient.Builder().build()).addConverterFactory(GsonConverterFactory.create()).build();
netApi=reformation.create(netApi.class);
initRecycleView()
getData();
}
public void getData(){
netApi.getData().enqueue(新回调()函数){
@凌驾
公共void onResponse(调用、响应){
if(response.issusccessful()){
Log.d(标记,response.body().toString());
items=newarraylist((response.body());
更新(项目);
}否则{
Toast.makeText(MainActivity.this,“错误:+response.message(),Toast.LENGTH\u SHORT.show();
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
}
});
}
私有void initRecycleView(){
recyclerView=(recyclerView)view.findViewById(R.id.MainRecyclerView);
adapter=新的ItemAdapter();
setLayoutManager(新的LinearLayoutManager(view.getContext());
recyclerView.setAdapter(适配器);
}
ItemAdapter如下所示:
[{"id":302,"latitude":-23.725,"longitude":34.2773,"place":"Panda Mozambik null"},{"id":312,"latitude":46.7681,"longitude":20.8186,"place":"Kondoros Magyarország null"},{"id":322,"latitude":8,"longitude":3,"place":"rr"}]
public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ItemViewHolder> {
public final List<Data> items;
public ItemAdapter() {
items = new ArrayList<>();
}
@Override
public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView =
LayoutInflater.from(parent.getContext()).
inflate(R.layout.item_recyclerview, parent, false);
ItemViewHolder viewHolder = new ItemViewHolder(itemView);
return viewHolder;
}
@Override
public void onBindViewHolder(ItemViewHolder holder, int position) {
Data item = items.get(position);
holder.longitude.setText(Float.toString(item.longitude));
holder.latitude.setText(Float.toString(item.latitude));
holder.place.setText(item.place);
holder.place.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(),"Clicked",Toast.LENGTH_LONG).show();
}
});
}
public void addItem(Data item) {
items.add(item);
notifyItemInserted(items.size() - 1);
}
@Override
public int getItemCount() {
return items.size();
}
public void update(List<Data> itemsrec) {
items.clear();
items.addAll(itemsrec);
notifyDataSetChanged();
}
public class ItemViewHolder extends RecyclerView.ViewHolder {
TextView place;
TextView longitude;
TextView latitude;
public ItemViewHolder(View itemView) {
super(itemView);
place = (TextView) itemView.findViewById(R.id.place);
longitude = (TextView) itemView.findViewById(R.id.longitude);
latitude = (TextView) itemView.findViewById(R.id.latitude);
}
}
公共类ItemAdapter扩展了RecyclerView.Adapter{
公开最后清单项目;
公共项适配器(){
items=newarraylist();
}
@凌驾
public ItemViewHolder onCreateViewHolder(视图组父级,int-viewType){
查看项目视图=
LayoutInflater.from(parent.getContext())。
充气(R.layout.item\u recyclerview,父项,假);
ItemViewHolder viewHolder=新的ItemViewHolder(itemView);
返回视图持有者;
}
@凌驾
BindViewHolder上的公共无效(ItemViewHolder,int位置){
数据项=items.get(位置);
holder.longitude.setText(Float.toString(item.longitude));
holder.latitude.setText(Float.toString(item.latitude));
holder.place.setText(项目位置);
holder.place.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Toast.makeText(v.getContext(),“Clicked”,Toast.LENGTH_LONG.show();
}
});
}
公共无效附加项(数据项){
项目。添加(项目);
notifyItemInserted(items.size()-1);
}
@凌驾
public int getItemCount(){
返回items.size();
}
公共作废更新(列表项SREC){
items.clear();
items.addAll(itemsrec);
notifyDataSetChanged();
}
公共类ItemViewHolder扩展了RecyclerView.ViewHolder{
文本视图位置;
文本视图经度;
文本视图纬度;
公共项目视图持有者(查看项目视图){
超级(项目视图);
place=(TextView)itemView.findViewById(R.id.place);
经度=(TextView)itemView.findViewById(R.id.longitude);
纬度=(TextView)itemView.findViewById(R.id.latitude);
}
}
}给我发送示例我添加了一个示例请给我发送一个使用此url的示例。。。。。。。我们使用json(beta.json generator.com/api/json/get/VJ9snXcFG)打印列表视图中的所有标题。下一个第一个标题是单击打开json中的第一个url(beta.json generator.com/api/json/get/VJ9snXcFG),第二个标题是单击打开json上的第二个url(beta.json generator.com/api/json/get/VJ9snXcFG),依此类推