Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.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
如何解析JSON并设置为in control。ListView或RecyclerView并单击该项目可以在android中启动另一项活动?_Android_Json_Listview - Fatal编程技术网

如何解析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并设置为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 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),依此类推