0

“brand_name”和“description”这些是我试图在 textviews 上打印的以下 json 文件中的数据。注意:JSON 数据文件位于 res/raw/brand.txt 下。

请帮我解决这个问题

提前致谢

这是我的消息来源

public class Index_page extends TabActivity {

Button white_brand;

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

              t1 = (TextView)findViewById(R.id.txt_name);
    t2 = (TextView)findViewById(R.id.txt_des);

      white_brand = (Button)findViewById(R.id.btn_brand_white);
    white_brand.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            get_brands_data();
        }
    });

       protected void get_brands_data() {
    // TODO Auto-generated method stub

    InputStream inputStream = getResources().openRawResource(R.raw.brand);
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

    int prdct;
    try {
        prdct = inputStream.read();
        while (prdct != -1) {
            byteArrayOutputStream.write(prdct);
            prdct = inputStream.read();
        }
        inputStream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {

        // Parse the data into jsonobject to get original data in form of json.

        JSONObject jObject = new JSONObject(byteArrayOutputStream.toString());
        JSONObject jObjectResult = jObject.getJSONObject("Products");

        String br_name = "";
        String br_desc = "";
        System.out.println("------" br_name);
        System.out.println("------" br_desc);
        t1.setText(br_name);
        t2.setText(br_desc);

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

JSON数据

{
"PublicationID": 53,
"PublicationDate": "18/01/2013",
"Publicationbackgroundimage": null,
"Products": [
    {
        "SequenceKey": 1,
        "ProductID": 100630,
        "Brand_Name": "Lindauer",
        "Region": "",
        "Country_of_Origin": "New Zealand",
        "Description": "Lindauer, the country's most popular sparkling wine brand, started life as a bold statement about the quality of wine that can be created in New Zealand's cool-climate. Made from traditional champagne grape varieties, Chardonnay and Pinot Noir and more recently premium Marlborough Sauvignon Blanc grapes, it uses the authentic method of bottling the wine for its second fermentation, a technique that creates the sparkle and distinctive yeasty flavours, regularly outperforming more expensive wines. Wines in this range include Lindauer Brut NV, Lindauer Fraise, Lindauer Rose, Lindauer Sec and Lindauer Sauvignon Blanc."
    }
  ]
}
4

1 回答 1

1

您不能在 UI 线程上执行任何 I/O。你必须get_brands_data();在一个单独的线程上调用你的。你想使用 AsyncTask。

于 2013-06-13T10:16:42.960 回答