Android 从JSON数组生成listview
我想从数据库中的JSON数组创建列表视图,但我无法实现将数组放入列表的方法,我从本教程中了解了该方法: 这段视频: 这是我的主要代码: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
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。让我来回答一下