JsonAdapter无法打印数据

时间:2016-02-18 11:26:00

标签: android arrays listview

我按照video尝试从mongodb获取数据  从mongodb获取JsonArray,并使用调试模式检查类JsonTest.java:EditText中有21个数据,并且都正确,并且listview有21行显示,但不知何故数据没有显示在textview,

我认为Class JsonTest.java:'ArrayList歌曲列表; Button button = (Button)findViewById(R.id.your_button); ViewGroup.LayoutParams params = button.getLayoutParams(); params.height = yourHeight; params.width = yourWidth; button.requestLayout(); 对吗? 请帮忙,坚持几个小时

JsonTest.java

ArrayList<JsonSongs> songlist;

JsonSonAdapter

did pass the data to class JsonSongAdapter.java  ˋArrayList<JsonSongs> songlist;

JsonSongs

public class JsonTest extends Activity {

ListView list;
ArrayList<JsonSongs> songlist;
   private TextView test;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.jsonmain);
    list = (ListView)findViewById(R.id.JsonlistView);
    songlist = new ArrayList<JsonSongs>();
    new JsonTalk().execute("http://192.168.1.102:3000/songs");

       }





class JsonTalk extends AsyncTask< String , String ,String>{

    @Override
    protected String doInBackground(String... params) {
        HttpURLConnection connection = null;
        BufferedReader reader = null;

        try {
            URL url = new URL(params[0]);
            connection = (HttpURLConnection) url.openConnection();
            connection.connect();

            InputStream stream = connection.getInputStream();
            reader = new BufferedReader(new InputStreamReader(stream));
            StringBuffer buffer = new StringBuffer();
            String line = "";
            while ((line = reader.readLine()) != null) {
                buffer.append(line);
            }
            String finalJson = buffer.toString();
           // JSONObject parentJsonObject = new JSONObject(finalJson);
            JSONArray jsonArray = new JSONArray(finalJson);
            JsonSongs jsonSongs = new JsonSongs();
            for (int i = 0 ; i < jsonArray.length();i++){
                JSONObject finaObject = jsonArray.getJSONObject(i);
                jsonSongs.set_id(finaObject.getString("_id"));
                jsonSongs.setDecade(finaObject.getString("decade"));
                jsonSongs.setArtist(finaObject.getString("artist"));
                jsonSongs.setSong(finaObject.getString("song"));
                jsonSongs.setWeeksAtOne(finaObject.getInt("weeksAtOne"));
                songlist.add(jsonSongs);
            }

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

        finally {
            if (connection != null) {
                connection.disconnect();
            }
            try {
                if (reader != null) {
                    reader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        if(result == null){
            JsonSonAdapter adapter = new JsonSonAdapter(getApplicationContext(),R.layout.jsonlayout,songlist);
            list.setAdapter(adapter);
        }else {
            Toast.makeText(JsonTest.this,"NOP",Toast.LENGTH_LONG).show();
        }
    }
}
}

1 个答案:

答案 0 :(得分:1)

  

但不知何故,数据没有在textview上显示,

你无处可去,所以没有奇迹。完成convertView以使用数据填充后,您需要在setText()EditText)上致电getView()

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder holder;
    if(convertView == null){
       convertView = vi.inflate(Resource,null);
        holder = new ViewHolder();
        holder.textJson_ID=(TextView)convertView.findViewById(R.id.textJson_ID);
        ...
        convertView.setTag(holder);
    }else {
        holder = (ViewHolder)convertView.getTag();
    }


    // populate it with data
    JsonSongs song = songs.get(position);
    holder.textJson_ID.setText(song.getSomething());
    ...


    return convertView;
}

PS:JsonSongs应该命名为JsonSong。你的命名模式很乱。