Android 从JSON数组生成listview

Android 从JSON数组生成listview,android,json,android-volley,Android,Json,Android Volley,我想从数据库中的JSON数组创建列表视图,但我无法实现将数组放入列表的方法,我从本教程中了解了该方法: 这段视频: 这是我的主要代码: public class ViewDosen extends AppCompatActivity { TextView tvWelcome; ListView listView; List<Publikasi> lstPublikasi; JSONArray jsonArray; String namaDo

我想从数据库中的JSON数组创建列表视图,但我无法实现将数组放入列表的方法,我从本教程中了解了该方法: 这段视频:

这是我的主要代码:

public class ViewDosen extends AppCompatActivity {

    TextView tvWelcome;
    ListView listView;
    List<Publikasi> lstPublikasi;
    JSONArray jsonArray;

    String namaDosen,kodeDosen;
    PublikasiAdapter publikasiAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_dosen);


        SharedPreferences DataDosen = getSharedPreferences("Dosen", Context.MODE_PRIVATE);
        kodeDosen = DataDosen.getString("kodeDosen","");
        namaDosen = DataDosen.getString("namaDosen","");

        tvWelcome = (TextView) findViewById(R.id.tvWelcome);
        tvWelcome.setText("Welcome "+namaDosen+"("+kodeDosen+")");

        listView = (ListView) findViewById(R.id.lstPublikasi);

        lstPublikasi = new ArrayList<Publikasi>();

        publikasiAdapter = new PublikasiAdapter(lstPublikasi,getApplicationContext());

        listView.setAdapter(publikasiAdapter);

    }
    String uri = String.format(Utils.viewURL,kodeDosen);

    private void showList(){

        final JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, uri, null, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {
             //this is where i will put the JSON Array
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });
    }
public class Publikasi {
    public String namaJurnal,tipePublikasi,status,periode;

    public Publikasi(JSONObject object) {
        try{
            this.namaJurnal =object.getString("namaJurnal");
            this.tipePublikasi = object.getString("tipePublikasi");;
            this.status = object.getString("status");;
            this.periode = object.getString("periode");;

        }catch (JSONException e){
            e.printStackTrace();
        }

        public static ArrayList<Publikasi> fromJSON(JSONArray jsonObjects){
            ArrayList<Publikasi> publikasi = new ArrayList<Publikasi>();
            for(int i = 0;i<jsonObjects.length();i++){
                try{

                }catch (){

                }
            }
            return publikasi;
        }


    }
}
public class PublikasiAdapter extends ArrayAdapter<Publikasi>{

private List<Publikasi> lstPublikasi;
private Context mCtx;

public PublikasiAdapter(List<Publikasi> P,Context c){
    super(c, R.layout.list_publikasi,P);
    this.lstPublikasi = P;
    this.mCtx = c;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = LayoutInflater.from(mCtx);
    if (convertView == null) {
        convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_publikasi, parent, false);
    }

    TextView textNama = (TextView) convertView.findViewById(R.id.textNama);
    TextView textDetail = (TextView) convertView.findViewById(R.id.textDetail);
    TextView textStatus = (TextView) convertView.findViewById(R.id.textStatus);
    TextView textPeriode = (TextView) convertView.findViewById(R.id.textPeriode);

    Publikasi publikasi = lstPublikasi.get(position);
    textNama.setText(publikasi.namaJurnal);
    textDetail.setText(publikasi.tipePublikasi);
    textStatus.setText(publikasi.status);
    textPeriode.setText(publikasi.periode);

    return convertView;
}
}
public class ViewDosen扩展了AppCompative活动{
TextView电视欢迎;
列表视图列表视图;
列出公共图书馆;
JSONArray JSONArray;
字符串namaDosen、kodeDosen;
PublikasiAdapter PublikasiAdapter;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u view\u dosen);
SharedReferences DataDosen=getSharedReferences(“Dosen”,Context.MODE\u PRIVATE);
kodeDosen=DataDosen.getString(“kodeDosen”,即“”);
namaDosen=DataDosen.getString(“namaDosen”,”);
tvWelcome=(TextView)findViewById(R.id.tvWelcome);
tvWelcome.setText(“欢迎”+namaDosen+”(“+kodeDosen+”));
listView=(listView)findViewById(R.id.lstPublikasi);
lstPublikasi=newarraylist();
publikasiAdapter=新的publikasiAdapter(lstPublikasi,getApplicationContext());
setAdapter(publikasiAdapter);
}
stringuri=String.format(Utils.viewURL,kodeDosen);
私有void showList(){
final JsonArrayRequest JsonArrayRequest=new JsonArrayRequest(Request.Method.GET,uri,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONArray响应){
//这就是我将放置JSON数组的地方
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
}
});
}
这是我的型号:

public class ViewDosen extends AppCompatActivity {

    TextView tvWelcome;
    ListView listView;
    List<Publikasi> lstPublikasi;
    JSONArray jsonArray;

    String namaDosen,kodeDosen;
    PublikasiAdapter publikasiAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_dosen);


        SharedPreferences DataDosen = getSharedPreferences("Dosen", Context.MODE_PRIVATE);
        kodeDosen = DataDosen.getString("kodeDosen","");
        namaDosen = DataDosen.getString("namaDosen","");

        tvWelcome = (TextView) findViewById(R.id.tvWelcome);
        tvWelcome.setText("Welcome "+namaDosen+"("+kodeDosen+")");

        listView = (ListView) findViewById(R.id.lstPublikasi);

        lstPublikasi = new ArrayList<Publikasi>();

        publikasiAdapter = new PublikasiAdapter(lstPublikasi,getApplicationContext());

        listView.setAdapter(publikasiAdapter);

    }
    String uri = String.format(Utils.viewURL,kodeDosen);

    private void showList(){

        final JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, uri, null, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {
             //this is where i will put the JSON Array
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });
    }
public class Publikasi {
    public String namaJurnal,tipePublikasi,status,periode;

    public Publikasi(JSONObject object) {
        try{
            this.namaJurnal =object.getString("namaJurnal");
            this.tipePublikasi = object.getString("tipePublikasi");;
            this.status = object.getString("status");;
            this.periode = object.getString("periode");;

        }catch (JSONException e){
            e.printStackTrace();
        }

        public static ArrayList<Publikasi> fromJSON(JSONArray jsonObjects){
            ArrayList<Publikasi> publikasi = new ArrayList<Publikasi>();
            for(int i = 0;i<jsonObjects.length();i++){
                try{

                }catch (){

                }
            }
            return publikasi;
        }


    }
}
public class PublikasiAdapter extends ArrayAdapter<Publikasi>{

private List<Publikasi> lstPublikasi;
private Context mCtx;

public PublikasiAdapter(List<Publikasi> P,Context c){
    super(c, R.layout.list_publikasi,P);
    this.lstPublikasi = P;
    this.mCtx = c;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = LayoutInflater.from(mCtx);
    if (convertView == null) {
        convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_publikasi, parent, false);
    }

    TextView textNama = (TextView) convertView.findViewById(R.id.textNama);
    TextView textDetail = (TextView) convertView.findViewById(R.id.textDetail);
    TextView textStatus = (TextView) convertView.findViewById(R.id.textStatus);
    TextView textPeriode = (TextView) convertView.findViewById(R.id.textPeriode);

    Publikasi publikasi = lstPublikasi.get(position);
    textNama.setText(publikasi.namaJurnal);
    textDetail.setText(publikasi.tipePublikasi);
    textStatus.setText(publikasi.status);
    textPeriode.setText(publikasi.periode);

    return convertView;
}
}
公共类Publikasi{
公共字符串namaJurnal、tipePublikasi、状态、周期;
公共Publikasi(JSONObject对象){
试一试{
this.namajunal=object.getString(“namajunal”);
this.tipePublicasi=object.getString(“tipePublicasi”);;
this.status=object.getString(“status”);;
this.periode=object.getString(“periode”);;
}捕获(JSONException e){
e、 printStackTrace();
}
来自JSON的公共静态ArrayList(JSONArray JSONObject){
ArrayList publikasi=新的ArrayList();
对于(inti=0;i请为showList()尝试以下代码

private void showList(){
final JsonArrayRequest JsonArrayRequest=new JsonArrayRequest(Request.Method.GET,uri,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONArray响应){
ArrayList publikasis=新ArrayList();

对于(inti=0;i您正在创建一个空列表,并将其提供给适配器。因此,没有要显示的列表

listView = (ListView) findViewById(R.id.lstPublikasi);

lstPublikasi = new ArrayList<Publikasi>();

publikasiAdapter = new PublikasiAdapter(lstPublikasi,getApplicationContext());
listView=(listView)findViewById(R.id.lstPublikasi);
lstPublikasi=newarraylist();
publikasiAdapter=新的publikasiAdapter(lstPublikasi,getApplicationContext());
当响应成功时,必须填写列表。之后,必须将列表提供给适配器的方法,如“updateList();”

以下是示例:

    private void showList() {
        final JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, uri, null, new Response.Listener < JSONArray > () {@
            Override
            public void onResponse(JSONArray response) {
                for (int i = 0; i < jsonArray.length(); i++) {
                    try {
                        lstPublikasi.add(new Publikasi(jsonArray.getJSONObject(i)));
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
                publikasiAdapter.updateList(lstPublikasi);
            }
        }, new Response.ErrorListener() {@
            Override
            public void onErrorResponse(VolleyError error) {}
        });
    }
    public class PublikasiAdapter extends ArrayAdapter < Publikasi > {
        private List < Publikasi > lstPublikasi;
        private Context mCtx;
        public PublikasiAdapter(List < Publikasi > P, Context c) {
            super(c, R.layout.list_publikasi, P);
            this.lstPublikasi = P;
            this.mCtx = c;
        }@
        Override
        public View getView(int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater = LayoutInflater.from(mCtx);
            if (convertView == null) {
                convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_publikasi, parent, false);
            }
            TextView textNama = (TextView) convertView.findViewById(R.id.textNama);
            TextView textDetail = (TextView) convertView.findViewById(R.id.textDetail);
            TextView textStatus = (TextView) convertView.findViewById(R.id.textStatus);
            TextView textPeriode = (TextView) convertView.findViewById(R.id.textPeriode);
            Publikasi publikasi = lstPublikasi.get(position);
            textNama.setText(publikasi.namaJurnal);
            textDetail.setText(publikasi.tipePublikasi);
            textStatus.setText(publikasi.status);
            textPeriode.setText(publikasi.periode);
            return convertView;
        }
        public void updateList(List < Publikasi > mlstPublikasi) {
            lstPublikasi = mlstPublikasi;
            notifyDataSetChanged();
        }
    }
private void showList(){
final JsonArrayRequest JsonArrayRequest=new JsonArrayRequest(Request.Method.GET,uri,null,new Response.Listener(){@
推翻
公共void onResponse(JSONArray响应){
for(int i=0;i{
私有列表lstPublikasi;
私有上下文mCtx;
公共Publikasi适配器(列表P,上下文c){
super(c,R.layout.list_publikasi,P);
这个.lstPublikasi=P;
this.mCtx=c;
}@
推翻
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutFlater充气机=LayoutFlater.from(mCtx);
if(convertView==null){
convertView=LayoutInflater.from(getContext()).flate(R.layout.list_publikasi,parent,false);
}
TextView textNama=(TextView)convertView.findViewById(R.id.textNama);
TextView textDetail=(TextView)convertView.findViewById(R.id.textDetail);
TextView textStatus=(TextView)convertView.findViewById(R.id.textStatus);
TextView textPeriode=(TextView)convertView.findViewById(R.id.textPeriode);
Publikasi-Publikasi=lstPublikasi.get(位置);
textNama.setText(publikasi.namajunal);
text detail.setText(publikasi.tipepubikasi);
text status.setText(publikasi.status);
text periode.setText(publikasi.periode);
返回视图;
}
公共无效更新列表(列表mlstPublikasi){
lstPublikasi=mlstPublikasi;
notifyDataSetChanged();
}
}

您在上述代码中面临的问题/问题是什么?我不知道如何将JSON数组放入ListView中。您可以将整个JSON格式放在这里吗?查看响应。getJSONObject(I)有一条红色下划线,表示它是未处理的JSON例外。您必须添加try-catch。让我来回答一下