Android SetText无法处理TextVIew,但值就在那里

时间:2016-02-05 06:32:02

标签: java php android sql

伙计我试图设置Textview但它没有改变,数据库中的值就在那里。我希望有人可以提供帮助

这里是java代码

public class Announcement_Details extends AppCompatActivity{

    private static final String GET_URL = "http://XXX";
    private ProgressDialog pDialog;
    TextView id,title,content,date;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lv_view);
        id = (TextView)findViewById(R.id.tv_id);
        title = (TextView)findViewById(R.id.tv_title);
        content = (TextView)findViewById(R.id.tv_content);
        date = (TextView)findViewById(R.id.tv_date);

        getAnnouncementDetails();


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.refresh) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    private void getAnnouncementDetails() {
        StringRequest postRequest = new StringRequest(Request.Method.POST, GET_URL,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {

                        try {
                            JSONObject jsonResponse = new JSONObject(response);
                            JSONArray data = jsonResponse.getJSONArray("announcement_data");
                            Log.d("Announcement Data", ""+data);
                            id.setText(data.getString(0));
                            title.setText(data.getString(1));
                            content.setText(data.getString(2));
                            date.setText(data.getString(3));

                        }catch (Exception e) {
                            e.printStackTrace();
                        }
                        pDialog.dismiss();
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        error.printStackTrace();
                    }
                }

        ) {
            @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<>();
                // the POST parameters:
                params.put("id", getIntent().getStringExtra("id"));
                return params;
            }
        };

        pDialog = new ProgressDialog(Announcement_Details.this);
        pDialog.setMessage("Getting Announcements Details.");
        pDialog.show();

        Volley.newRequestQueue(getApplication()).add(postRequest);


    }
}

这里是logcat

的值
02-05 01:28:35.861    4004-4004/com.example.wackyroad.internannouncement D/Announcement Data﹕ [{"announcement_title":"Sample Title Here","announcement_content":"Sample Content","announcement_date":"2016-02-04"}]

5 个答案:

答案 0 :(得分:2)

我认为你没有正确的解析数据,试试这个片段会有所帮助

title.setText(data.getJSONObject(0).getString("announcement_title")); 
                      content.setText(data.getJSONObject(0).getString("announcement_content"));  
                     date.setText(data.getJSONObject(0).getString("announcement_date"));

答案 1 :(得分:1)

解析数据时出错 - 请看这个 -

 @Html.DropDownList("ddl_SearchBy", new List<SelectListItem> 
     { 
       new SelectListItem{Text="PA Number",Value="PA"},
       new SelectListItem{Text="Customer Code" ,Value="CustCode"},
       new SelectListItem{Text="Customer Name" ,Value="CustName"},
       new SelectListItem{Text="Order Type" ,Value="OrderType"},
       new SelectListItem{Text="Discount Type" ,Value="DiscType"},
       new SelectListItem{Text="EIC", Value="EIC"},
       new SelectListItem{Text="Status", Value="status"}
      }, "-Select Criteria-", new { @class = "form-control", @id = "ddl_SearchBy" }                            

@Html.DropDownList("ddl_OrderType", Model.lstOrderType, "-Select Order Type-", new { @class = "form-control", @id = "ddlOrderType"})    
@Html.DropDownList("ddl_Status", Model.lstStatus, "-Select Status-", new { @class = "form-control", @style = "display:none", @id = "ddl_Status" })

以下是解析数据的非常重要的链接 - LINK

答案 2 :(得分:1)

[{"announcement_title":"Sample Title Here",  //  0 pos
"announcement_content":"Sample Content",  //  1 pos
"announcement_date":"2016-02-04"}]  //  2 pos

您的json数组大小为3,但您正在检索4个项目。

 id.setText(data.getString(0));
 title.setText(data.getString(1));
 content.setText(data.getString(2));
 date.setText(data.getString(3)); //remove this one

让我知道这是否有效。

答案 3 :(得分:1)

您的Json数据中没有Id。

从JsonArray中解析给定响应的数据并从数组中获取JsonObject。然后解析JsonObject中的细节。

 title.setText(title); 
 content.setText(content);                                                                
 date.setText(date);

将json数据设置为TextView:

{{1}}

答案 4 :(得分:0)

您的json数据如下所示: -

[{“announcement_title”:“Sample Title Here”,“announcement_content”:“Sample Content”,“announcement_date”:“2016-02-04”}]

您的Json数据中没有ID: -

//注释Id settext此行,因为您的Json数据中没有Id

// id.setText(data.getString(0));

因此,您必须在代码中更改索引值,如下所示: -

title.setText(data.getString(0));

content.setText(data.getString(1));

date.setText(data.getString(2));