【问题标题】:Android json array to another textviewAndroid json数组到另一个textview
【发布时间】:2013-11-06 14:16:08
【问题描述】:

我有 3 个片段页面应用程序,在第一个和第三个片段中我有列表视图,在第二个片段中只有一个 textview(infoz)。代码工作正常,但我无法在第二个片段中将 json 字符串添加到 textview 我尝试了几种方法但我没有成功。 TextView infoz = (TextView) getView().findViewById(R.id.infoz); 这是我想用数组中的字符串填充的文本视图,我该怎么做?

这里是代码

  public class Fragment2 extends Fragment {

 private ArrayList<FeedItem> feedList;
 private ArrayList<SecondFeedItem> secondfeedList;
 private ListView feedListView;
 private ListView secondfeedListView;





  @Override  
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  
      View rootView = inflater.inflate(R.layout.home, container, false);


      String url = "";
      new DownloadFilesTask().execute(url);
    return rootView;  

  }


  public void updateList() {


      TextView infoz = (TextView) getView().findViewById(R.id.infoz);





      feedListView= (ListView)getActivity().findViewById(R.id.custom_list);
      secondfeedListView = (ListView)getActivity().findViewById(R.id.second_list);


      feedListView.setAdapter(new CustomListAdapter(getActivity(), feedList));
      feedListView.setOnItemClickListener(new OnItemClickListener() {



              @Override
              public void onItemClick(AdapterView<?> a, View v, int position, long id) {
                      Object o = feedListView.getItemAtPosition(position);
                      FeedItem newsData = (FeedItem) o;


                      Intent intent = new Intent(getActivity(), FeedDetailsActivity.class);
                      intent.putExtra("feed", newsData);
                      startActivity(intent);
              }
      });
      secondfeedListView.setAdapter(new secondCustomListAdapter (getActivity(), secondfeedList));
      secondfeedListView.setOnItemClickListener(new OnItemClickListener() {



              @Override
              public void onItemClick(AdapterView<?> a, View v, int position, long id) {
                      Object o = secondfeedListView.getItemAtPosition(position);
                      secondFeedItem secondData = (secondFeedItem) o;


                      Intent intent = new Intent(getActivity(), secondFeedDetailsActivity.class);
                      intent.putExtra("secondfeed", secondData);
                      startActivity(intent);
              }
      });
       }


         public class DownloadFilesTask extends AsyncTask<String, Integer, Void> {

      @Override
      protected void onProgressUpdate(Integer... values) {
      }

      @Override
      protected void onPostExecute(Void result) {
              if (null != feedList) {
                      updateList();
              }
              if (null != badfeedList) {
                  updateList();
          }
      }

      @Override
      protected Void doInBackground(String... params) {
              String url = params[0];

              // getting JSON string from URL
              JSONObject json = getJSONFromUrl(url);

              //parsing json data
              parseJson(json);
              return null;
      }
     }


       public JSONObject getJSONFromUrl(String url) {
      InputStream is = null;
      JSONObject jObj = null;
      String json = null;

      // Making HTTP request
      try {
              // defaultHttpClient
              DefaultHttpClient httpClient = new DefaultHttpClient();
              HttpPost httpPost = new HttpPost(url);

              HttpResponse httpResponse = httpClient.execute(httpPost);
              HttpEntity httpEntity = httpResponse.getEntity();
              is = httpEntity.getContent();

              BufferedReader reader = new BufferedReader(new InputStreamReader(
                              is, "iso-8859-1"), 8);
              StringBuilder sb = new StringBuilder();
              String line = null;
              while ((line = reader.readLine()) != null) {
                      sb.append(line + "\n");
              }
              is.close();
              json = sb.toString();
      } catch (UnsupportedEncodingException e) {
              e.printStackTrace();
      } catch (ClientProtocolException e) {
              e.printStackTrace();
      } catch (IOException e) {
              e.printStackTrace();
      }

      try {
              jObj = new JSONObject(json);
      } catch (JSONException e) {
              Log.e("JSON Parser", "Error parsing data " + e.toString());
      }

      // return JSON String
      return jObj;

         }

      public void parseJson(JSONObject json) {
      try {

              // parsing json object
              if (json.getString("status").equalsIgnoreCase("ok")) {
                      JSONArray posts = json.getJSONArray("posts");


                      String inffoz;

                      feedList = new ArrayList<FeedItem>();

                      for (int i = 0; i < posts.length(); i++) {
                              JSONObject post = (JSONObject) posts.getJSONObject(i);
                              FeedItem item = new FeedItem();

                              item.setTitle(post.getString("title"));
                              item.setDate(post.getString("description"));
                              item.setId(post.getString("id"));
                              item.setUrl(post.getString("url"));
                              item.setContent(post.getString("description"));
                              item.setsecondtitle(post.getString("description"));

                              JSONArray attachments = post.getJSONArray("attachments");
                              item.setsecondtitle(post.getString("secondtitle"));
                              if (null != attachments && attachments.length() > 0) {
                                      JSONObject attachment = attachments.getJSONObject(0);
                                      if (attachment != null)
                                              item.setAttachmentUrl(attachment.getString("url"));
                              }

                              feedList.add(item); 

                      }

                      } 






              if (json.getString("status").equalsIgnoreCase("ok")) {
                  JSONArray posts = json.getJSONArray("posts");

                      secondfeedList = new ArrayList<secondFeedItem>();

                      for (int i = 0; i < posts.length(); i++) {
                              JSONObject post = (JSONObject) posts.getJSONObject(i);
                              secondFeedItem item = new secondFeedItem();
                              item.setTitle(post.getString("title"));
                              item.setDate(post.getString("description"));
                              item.setId(post.getString("id"));
                              item.setUrl(post.getString("url"));
                              item.setContent(post.getString("description"));


                              JSONArray attachments = post.getJSONArray("attachments");

                              if (null != attachments && attachments.length() > 0) {
                                      JSONObject attachment = attachments.getJSONObject(0);
                                      if (attachment != null)
                                              item.setAttachmentUrl(attachment.getString("url"));
                              }

                              secondfeedList.add(item); 

                      }

              }




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




   }

json

 {
  "status": "ok",
  "count": 10,
  "posts": [
   {
      "id": 2398,
      "type": "post",
      "slug": "",
      "url": "",
      "status": "publish",
      "title": "bla",
      "description": "bla",
      "date": "2013-06-11 ",
      "content": "dadadadaddaadad",
      "secondbadtitle": "blaaaaaaa",
      "attachments": [
         {
            "id": 2342,
            "url": "",
            "slug": "",
            "title": "",
            "description": "",
            "content": "dadadadaddaadad", 
            "caption": "ssss",
            "parent": 2398,
            "mime_type": "image/jpg",
            "images": []
         }

     ],
     "comment_count": 3
  }
}

【问题讨论】:

  • 你能用任意字符串设置 textview 的文本吗?
  • 是的,我确实用 infoz.settext(string);字符串字符串 = dsds;
  • 好的,只是想确保它有效。您是否将 JSON 数组反编译为字符串?编辑:成功*
  • 所有 json 对象都进入 feedList = new ArrayList();和 FeedItem 类实现 Serializable
  • 请给我你的 JSON 格式好吗?

标签: java android json android-listview


【解决方案1】:

试试这个......

 List list=new ArrayList();
        JSONObject jObject  = new JSONObject(str_response_starter);

        JSONArray json_array_item_id = jObject.getJSONArray("itemid");
        System.out.println("json array item id"+json_array_item_id);

        JSONArray json_array_item_name = jObject.getJSONArray("itemname");
        System.out.println("json array item name"+json_array_item_name);


        JSONArray json_array_item_type = jObject.getJSONArray("type");
        System.out.println("json array item type"+json_array_item_type);

        JSONArray json_array_item_cost = jObject.getJSONArray("cost");
        System.out.println("json array item cost"+json_array_item_cost);

如果您提供 JSON 格式对我们来说会更好。通过使用集合类,这很容易。如果您有任何问题,请告诉我

【讨论】:

  • 我在问题中添加了 json :)
  • 首先是 JSONArray。然后首先将 json String 存储在 JSONArray 中,现在您可以通过 get jsonarray 使用 count 、 status 、comment_count 。现在 Post 是 JSONObject ,通过 getJSONArray 访问 post id 的数据。如果有任何问题,请告诉我
  • 但是如何将它添加到 textview 中? infoz.setText(json_array_item_id);不工作
  • 从那里解析成字符串,或者尝试 .setText(""+json_array_item_id);
  • 好的。你在哪里使用 .setText?尝试塞缪尔的建议。如果它有效,那么 Upvote 。如果不能再次 ping 我
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-11
  • 2019-04-11
  • 1970-01-01
  • 2013-10-22
相关资源
最近更新 更多