これは私のコードです。サーバーからデータを取得してリストビューに表示しようとしています。コンソールウィンドウで「文字列をJSONObjectに変換できません」というエラーが表示されます。だから誰も私にこれに答えることができますようにしてください。文字列をサーバーからアンドロイドでJSONObjectに変換できません
attendence.java
package com.example.pranav.attendence;
public class attendance
{
public String name;
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
}
AttendanceAdapter.java
package com.example.pranav.attendence;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
public class AttendanceAdapter extends BaseAdapter
{
public final MainActivity mainActivity;
public final ArrayList<attendance> studentlist;
attendance attendance;
public AttendanceAdapter(MainActivity mainActivity, ArrayList<attendance> studentlist)
{
this.mainActivity = mainActivity;
this.studentlist = studentlist;
}
@Override
public int getCount()
{
return studentlist.size();
}
@Override
public Object getItem(int i)
{
return studentlist.get(i);
}
@Override
public long getItemId(int i)
{
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup)
{
View row=view;
AttendanceAdapter.SubjectHolder holder=null;
if(row==null)
{
LayoutInflater inflater=LayoutInflater.from(mainActivity);
row=inflater.inflate(R.layout.list_item,viewGroup,false);
holder = new AttendanceAdapter.SubjectHolder();
holder.nametv= (TextView) row.findViewById(R.id.name);
row.setTag(holder);
}
else
{
holder= (AttendanceAdapter.SubjectHolder) row.getTag();
}
attendance stud=studentlist.get(i);
holder.nametv.setText(attendance.getName());
return row;
}
class SubjectHolder
{
TextView nametv;
}
}
MainActivity.java
package com.example.pranav.attendence;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity
{
ListView playerListView;
ArrayList<attendance> playerList = new ArrayList<attendance>();
attendance attendance;
AttendanceAdapter playerAdapter;
ProgressDialog dialog;
String TAG=null;
String name;
String URL="https://pranavpatel428.000webhostapp.com/image/myphp/demo.php";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
playerListView=(ListView)findViewById(R.id.listview);
dialog = new ProgressDialog(this);
getSubject();
playerListView.setAdapter(playerAdapter);
playerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
attendance player=playerList.get(i);
}
});
}
private void getSubject()
{
dialog.setMessage("Fetching Subject... Please Wait");
dialog.show();
StringRequest stringRequest = new StringRequest(Request.Method.GET, URL, new Response.Listener<String>()
{
@Override
public void onResponse(String response)
{
dialog.dismiss();
try {
JSONObject obj = new JSONObject(response);
JSONArray jsonArray = obj.getJSONArray("data");
for(int i=0;i<jsonArray.length();i++){
//Declaring a json object corresponding to every pdf object in our json Array
JSONObject jsonObject = jsonArray.getJSONObject(i);
//Declaring a Pdf object to add it to the ArrayList pdfList
name = jsonObject.getString("name");
}
attendance = new attendance();
attendance.setName(name);
playerList.add(attendance);
playerAdapter=new AttendanceAdapter(MainActivity.this,playerList);
playerListView.setAdapter(playerAdapter);
playerAdapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, "" + e, Toast.LENGTH_SHORT).show();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
RequestQueue request = Volley.newRequestQueue(this);
request.add(stringRequest);
}
}
Output
I am getting this type of error and not getting list coming from server.
StringはJSONObjectに変換できないことは明らかです。したがって、あなたの応答が有効でないか、または解析が間違っています。 – Kunu
あなたのコードをデバッグする人はいません。あなたがこれを解決するために行ったことを示してください。ここに答えたい具体的な質問があります。 – jdv
ちなみに、 'playerList.add(出席);'は、一番最後の名前のために一度だけ呼び出されます –