在android的textview中显示json数据的结果
Posted
技术标签:
【中文标题】在android的textview中显示json数据的结果【英文标题】:display result of json data in textview of android 【发布时间】:2016-12-02 16:39:27 【问题描述】:我在 android 应用程序中显示数据时遇到一个问题。这是我的 php。我现在已经编辑以缩短代码。
if($imei_no!="" && $app_auid!="")
//chk query
$chk_query=$db1->query("select * from user where imei_number='$imei_no'");
$chk_cnt=$chk_query->rowCount();
if($chk_cnt>0)
$search_qry=$db1->query("select * from candidate_reception cr,candidate_counseling cc ,candidate_admission ca where cr.candidate_id=cc.candidate_id and cr.candidate_id=ca.candidate_id and cr.auid=ca.auid and cr.counseling_id=cc.counseling_id and cr.auid='$app_auid'");
$ser_count=$search_qry->rowCount();
if($ser_count>0)
$stud_row=$search_qry->fetch(PDO::FETCH_OBJ);
$candidate_id=$stud_row->candidate_id;
$auid = $stud_row->auid;
$usn_no = $stud_row->usn_no;
$sx = $stud_row->candidate_sex
//image path
if($inst_id==1) $img_path = "1";
if($inst_id==2) $img_path = "2";
$result=array();
array_push($result, array('name' => $candidate_name,'img_path'=>$img_path));
echo json_encode(array("can_data"=>$result));
echo "Success"
else
echo "Auid not Found.";
else
echo "Invalid IMEI Number.!!!";
?>
这是我的java代码:
private static final String LOGIN_URL = "http://xxx.xxx.x.x/mobile_app/data_push.php";
private EditText editTextUserName;
private Button buttonLogin;
TelephonyManager tel;
TextView imei;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_imei__val);
editTextUserName = (EditText) findViewById(R.id.editTextAUID);
buttonLogin = (Button) findViewById(R.id.btn);
buttonLogin.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
login();
);
tel = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
imei = (TextView) findViewById(R.id.textView2);
imei.setText(tel.getDeviceId().toString());
private void login()
String username = editTextUserName.getText().toString().trim();
String imei_no = imei.getText().toString().trim();
userLogin(username,imei_no);
private void userLogin(final String username,final String imei_no)
class UserLoginClass extends AsyncTask<String,Void,String>
ProgressDialog loading;
@Override
protected void onPreExecute()
super.onPreExecute();
loading = ProgressDialog.show(IMEI_Val.this,"Please Wait",null,true,true);
@Override
protected void onPostExecute(String s)
super.onPostExecute(s);
loading.dismiss();
if(s=="Success")
Intent intent = new Intent(IMEI_Val.this, CapturePhoto.class);
// intent.putExtra(USER_NAME,username);
startActivity(intent);
else
Toast.makeText(IMEI_Val.this, s, Toast.LENGTH_LONG).show();
Log.d("Tag Name", "Log Message");
@Override
protected String doInBackground(String... params)
HashMap<String,String> data = new HashMap<>();
data.put("auid",params[0]);
data.put("imei",params[1]);
RegisterUserClass ruc = new RegisterUserClass();
String result = ruc.sendPostRequest(LOGIN_URL,data);
return result;
UserLoginClass ulc = new UserLoginClass();
ulc.execute(username,imei_no);
我的问题是当我点击登录按钮时,在有效的用户输入后,我会得到带有学生详细信息的 json 结果。如果用户输入有效,我想进入下一个活动并显示其他详细信息,如姓名、学院等。我怎样才能做到这一点? 当我输入有效输入时,这里得到 json 结果作为响应。即使输入正确的 regno,我也无法转到下一个活动并在文本框中显示其他详细信息。
【问题讨论】:
@user6588225 你得到什么 json 响应?显示您在 Toast 消息中的内容 这是 toast 中的消息: "can_data":["name":"dfsdfd","address":"gdgfsdf","course":"dfdfdsf"] 成功 【参考方案1】:@user6588225
所以你发送带有成功消息的 Json
所以不要使用==
,而是尝试使用contains
所以在你的onPostExecute(String s)
里面
@Override
protected void onPostExecute(String s)
super.onPostExecute(s);
loading.dismiss();
if(s.contains("Success"))
Intent intent = new Intent(IMEI_Val.this, CapturePhoto.class);
// intent.putExtra(USER_NAME,username);
startActivity(intent);
else
Toast.makeText(IMEI_Val.this, s, Toast.LENGTH_LONG).show();
Log.d("Tag Name", "Log Message");
【讨论】:
知道了。非常感谢 :) @user6588225 你可能已经得到了这个,但现在你必须解码你的 json 并将这些解码后的值传递给下一个活动 是的。我该怎么做。现在我只是在尝试。请你帮我至少显示一个数据。 @user6588225 检查 Farhan 答案并尝试从您的 PHP 以该格式向您发送 json 数据,然后我将相应地编辑我的答案 @eLemEnt 你能推荐一些链接吗?【参考方案2】:使用 if("Success".equalsIgnoreCase(s)) 替换 if(s=="Success")
【讨论】:
您将“成功”作为变量 s 中的值。对吧? 你能把你在吐司里得到的截图贴出来 这就像注册用户在登录页面输入他的用户名和密码等信息一样,然后转到下一个活动并在验证后显示该用户的所有详细信息。如何使用 php和安卓 输入有效信息后,else部分正在执行。 @user6588225 伙计,因为即使您输入了有效的详细信息,您也会从您的 php 文件中发送“成功”以及一些键值数组,这就是为什么只有“成功”没有得到匹配的原因。请发布您在 Toast 中得到的信息【参考方案3】:将您在 php 中的响应更改为此
echo json_encode(array("can_data"=>$result,"success"=>"1"));
在android端解析为
JsonObject responseObject = new JsonObject(responseString);
String success=responseObject.getString("success");
if(success.equals("1"))
// go to next activity
【讨论】:
以上是关于在android的textview中显示json数据的结果的主要内容,如果未能解决你的问题,请参考以下文章
Android中如何让TextView显示指定的行数并且多出的部分显示省略号
如何使用快速的Android网络库在Android中显示Json结果