分析数据JSON时出错,Android Studio片段
有人请帮助我,为什么我的结果总是在分析数据时出错? 我的应用程序运行平稳,但不显示任何内容。我觉得自己被困在这里了。 这是我的密码 对不起,英语不好 API JSON分析数据JSON时出错,Android Studio片段,json,android-studio,android-fragments,Json,Android Studio,Android Fragments,有人请帮助我,为什么我的结果总是在分析数据时出错? 我的应用程序运行平稳,但不显示任何内容。我觉得自己被困在这里了。 这是我的密码 对不起,英语不好 API JSON public function getkategori2(){ $data = array(); $token = $this->input->post('f_token'); $tabel = $this->input->post('f_tabel'); if ($tok
public function getkategori2(){
$data = array();
$token = $this->input->post('f_token');
$tabel = $this->input->post('f_tabel');
if ($token == '' || $tabel == ''){
$data['result'] = false;
$data['msg'] = "Data Kosong";
echo json_encode($data);
return;
}
$sql = 'SELECT * FROM '.$tabel.'_kategori INNER JOIN files WHERE '.$tabel.'_kategori.id_kategori = files.id_kategori';
$q = $this->db->query($sql);
if ($q->num_rows()>0) {
foreach ($q->result() as $value) {
$kategori = array(
'nama_kategori' => $value->nama_kategori,
'file_name' => $value->file_name,
);
};
$data['result'] = true;
$data['kategori_data'] = $kategori;
$data['msg'] = '';
} else {
$data['result'] = false;
$data['msg'] = 'error';
}
echo json_encode($data);
}
JSON结果
public class KategoriFragment extends Fragment {
SessionManager sesi;
private ArrayList<Kategori> data;
private OkHttpClient okClient;
private RecyclerView rvData;
public KategoriFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_kategori, container, false);
sesi = new SessionManager(getActivity());
data = new ArrayList<>();
okClient = new OkHttpClient();
rvData = rootView.findViewById(R.id.rvData);
RecyclerView.LayoutManager manager = new LinearLayoutManager(getActivity());
rvData.setLayoutManager(manager);
getData();
return rootView;
}
private void getData(){
data.clear();
String url = Constant.BASE_URL + "getkategori2";
FormBody parameters = new FormBody.Builder()
.add("f_token", sesi.getToken())
.add("f_tabel", sesi.getTabel())
.build();
//buat request untuk ambil data
Request request = new Request.Builder()
.url(url)
.post(parameters)
.build();
okClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, final IOException e) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
e.printStackTrace();
RbHelpers.pesan(getActivity(),
"error :" + e.getMessage());
}
});
}
@Override
public void onResponse(Call call,final Response response) throws IOException {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
//hilangkan dialognya
}});
final String responData = response.body().string();
RbHelpers.pre("respon data : " + responData);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
//debug hasilnya kedalam android monitor
try {
//parsing json
try {
JSONObject json = new JSONObject(responData);
Log.d("tagJSON",json.toString());
//check hasilnya apakah true or false
boolean hasil = json.getBoolean("result");
if (hasil){
//ada datanya
//buat object jsonArray
JSONArray jArray = json.getJSONArray("kategori_data");
//looping data dan masukkan kedalam arraylist
for (int i = 0; i < jArray.length(); i++){
JSONObject jObj = jArray.getJSONObject(i);
Kategori kategori = new Kategori();
kategori.setKategoriNama(jObj.getString("nama_kategori"));
kategori.setImg(jObj.getString("file_name"));
//tinggal masukan ke arraylist
data.add(kategori);
}
} else {
String msg = json.getString("msg");
RbHelpers.pesan(getActivity(), msg);
}
//tinggal masukin ke recylerview
//UserAdapter adapter = new UserAdapter
KategoriAdapter adapter = new KategoriAdapter(getActivity(), data);
rvData.setAdapter(adapter);
} catch (JSONException e){
RbHelpers.pesan(getActivity(), "Error parsing data");
e.printStackTrace();
}
} catch (Exception e) {
RbHelpers.pesan(getActivity(), "Error ambil data");
e.printStackTrace();
}
}
});
}
});
}
{
“结果”:正确,
“kategori_数据”:
{
“nama_kategori”:“意大利面”,
“文件名”:“1_面食.jpg”
},
“msg”:”
}
KategoriAdapter
public class KategoriAdapter extends RecyclerView.Adapter<KategoriAdapter.ViewHolder> {
private ArrayList<Kategori> mData;
private Context context;
private SessionManager sesi;
public KategoriAdapter (Context context, ArrayList<Kategori> mData){
this.context = context;
this.mData = mData;
}
@Override
public KategoriAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
View view = LayoutInflater.from(context)
.inflate(R.layout.item_list_kategori, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(KategoriAdapter.ViewHolder holder, int position) {
Kategori k = mData.get(position);
String kategori = k.getKategoriNama();
String gambar = k.getImg();
//masukan kedalam object viewholder
holder.tvKategori.setText(kategori);
Picasso.with(context)
.load(Constant.BASE_IMAGE + sesi.getTabel() + "/kategori/" + gambar)
.into(holder.ivKategori);
}
//buta object interface onAdapterjabatanListener
private OnAdapterListener listener;
//buat method untuk mendefiniskan listenernya
public void setListener(OnAdapterListener listener){
this.listener = listener;
}
@Override
public int getItemCount() {
return mData == null ? 0 : mData.size();
}
//buat class yang extend dari ViewHolder
class ViewHolder extends RecyclerView.ViewHolder{
public LinearLayout container;
public TextView tvKategori;
public ImageView ivKategori;
public ViewHolder(View v){
super(v);
//baru hubungkan variablenya dengan item yang ada di class layout item
container = v.findViewById(R.id.container);
tvKategori = v.findViewById(R.id.tvKategori);
ivKategori = v.findViewById(R.id.ivKategori);
}
}
公共类KategoriAdapter扩展了RecyclerView.Adapter{
私有ArrayList mData;
私人语境;
私人会话管理器sesi;
公共KategoriAdapter(上下文,ArrayList mData){
this.context=上下文;
this.mData=mData;
}
@凌驾
public KategoriAdapter.ViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图=LayoutFlater.from(上下文)
.充气(R.layout.item_list_kategori,父项,假);
返回新的ViewHolder(视图);
}
@凌驾
BindViewHolder上的公共无效(KategoriAdapter.ViewHolder,int位置){
Kategori k=mData.get(位置);
字符串kategori=k.getKategoriNama();
字符串gambar=k.getImg();
//masukan kedalam对象视图持有者
holder.tvKategori.setText(kategori);
毕加索。与(上下文)
.load(Constant.BASE_IMAGE+sesi.getTabel()+“/kategori/”+gambar)
.into(holder.ivKategori);
}
//但是AdapterJabatanListener上的对象接口
私有的onadapter侦听器;
//使用buat方法改善李斯特菌群
公共void setListener(OnAdapterListener侦听器){
this.listener=listener;
}
@凌驾
public int getItemCount(){
返回mData==null?0:mData.size();
}
//buat类yang延伸至dari视窗支架
类ViewHolder扩展了RecyclerView.ViewHolder{
公共线路布局集装箱;
公共文本视图tvKategori;
公共图像视图ivKategori;
公共视图持有者(视图v){
超级(五);
//在设计类项目中,最重要的是可变项目
容器=v.findviewbyd(R.id.container);
tvKategori=v.findViewById(R.id.tvKategori);
ivKategori=v.findViewById(R.id.ivKategori);
}
}
KategoriFragment
public class KategoriFragment extends Fragment {
SessionManager sesi;
private ArrayList<Kategori> data;
private OkHttpClient okClient;
private RecyclerView rvData;
public KategoriFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_kategori, container, false);
sesi = new SessionManager(getActivity());
data = new ArrayList<>();
okClient = new OkHttpClient();
rvData = rootView.findViewById(R.id.rvData);
RecyclerView.LayoutManager manager = new LinearLayoutManager(getActivity());
rvData.setLayoutManager(manager);
getData();
return rootView;
}
private void getData(){
data.clear();
String url = Constant.BASE_URL + "getkategori2";
FormBody parameters = new FormBody.Builder()
.add("f_token", sesi.getToken())
.add("f_tabel", sesi.getTabel())
.build();
//buat request untuk ambil data
Request request = new Request.Builder()
.url(url)
.post(parameters)
.build();
okClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, final IOException e) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
e.printStackTrace();
RbHelpers.pesan(getActivity(),
"error :" + e.getMessage());
}
});
}
@Override
public void onResponse(Call call,final Response response) throws IOException {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
//hilangkan dialognya
}});
final String responData = response.body().string();
RbHelpers.pre("respon data : " + responData);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
//debug hasilnya kedalam android monitor
try {
//parsing json
try {
JSONObject json = new JSONObject(responData);
Log.d("tagJSON",json.toString());
//check hasilnya apakah true or false
boolean hasil = json.getBoolean("result");
if (hasil){
//ada datanya
//buat object jsonArray
JSONArray jArray = json.getJSONArray("kategori_data");
//looping data dan masukkan kedalam arraylist
for (int i = 0; i < jArray.length(); i++){
JSONObject jObj = jArray.getJSONObject(i);
Kategori kategori = new Kategori();
kategori.setKategoriNama(jObj.getString("nama_kategori"));
kategori.setImg(jObj.getString("file_name"));
//tinggal masukan ke arraylist
data.add(kategori);
}
} else {
String msg = json.getString("msg");
RbHelpers.pesan(getActivity(), msg);
}
//tinggal masukin ke recylerview
//UserAdapter adapter = new UserAdapter
KategoriAdapter adapter = new KategoriAdapter(getActivity(), data);
rvData.setAdapter(adapter);
} catch (JSONException e){
RbHelpers.pesan(getActivity(), "Error parsing data");
e.printStackTrace();
}
} catch (Exception e) {
RbHelpers.pesan(getActivity(), "Error ambil data");
e.printStackTrace();
}
}
});
}
});
}
公共类KategoriFragment扩展了片段{
会话管理器sesi;
私有数组列表数据;
私人OkHttpClient okClient;
私人数据回收;
公共部门{
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图根视图=充气机。充气(R.layout.fragment_kategori,容器,false);
sesi=新会话管理器(getActivity());
数据=新的ArrayList();
okClient=新的OkHttpClient();
rvData=rootView.findviewbyd(R.id.rvData);
RecyclerView.LayoutManager=newlinearlayoutmanager(getActivity());
rvData.setLayoutManager(管理器);
getData();
返回rootView;
}
私有void getData(){
data.clear();
字符串url=Constant.BASE_url+“getkategori2”;
FormBody参数=新建FormBody.Builder()
.add(“f_标记”,sesi.getToken())
.add(“f_tabel”,sesi.getTabel())
.build();
//buat请求取消环境数据
Request Request=newrequest.Builder()
.url(url)
.post(参数)
.build();
okClient.newCall(request).enqueue(newcallback(){
@凌驾
公共void onFailure(调用,最终IOE异常){
getActivity().runOnUiThread(新的Runnable()){
@凌驾
公开募捐{
e、 printStackTrace();
RbHelpers.pesan(getActivity(),
“错误:”+e.getMessage());
}
});
}
@凌驾
public void onResponse(调用、最终响应)引发IOException{
getActivity().runOnUiThread(新的Runnable()){
@凌驾
公开募捐{
//hilangkan dialognya
}});
final String responData=response.body().String();
RbHelpers.pre(“响应数据:+responData”);
getActivity().runOnUiThread(新的Runnable()){
@凌驾
公开募捐{
//调试hasilnya kedalam android监视器
试一试{
//解析json
试一试{
JSONObject json=新的JSONObject(响应数据);
Log.d(“tagJSON”,json.toString());
//检查hasilnya apakah是否正确
boolean hasil=json.getBoolean(“结果”);
如果(哈西尔){
//阿达达塔尼亚
//buat对象jsonArray
JSONArray jArray=json.getJSONArray(“kategori_数据”);
//循环数据和masukkan kedalam阵列列表
for(int i=0;i