【发布时间】:2018-01-28 11:57:28
【问题描述】:
我正在使用 asynctask,我想通过它获取名称的 json 数组并希望在 listview 中显示。 这是我的php代码:
$con=mysqli_connect("localhost","root","","raheel");
$id=intval($_POST['id']);
$mysqli_qry="select* from name where Name_id='$id'; ";
$result=mysqli_query($con,$mysqli_qry)or die("Error Occur in Connection" . mysqli_error($con));
$rowcount=mysqli_num_rows($result);
$arr=Array();
if($rowcount>0)
{
while($row=mysqli_fetch_assoc($result))
{
$arr=$row;
}
}
header('Content-Type: application/json');
echo json_encode($arr);
mysqli_close($con
?>
我面临的问题是我将如何在异步任务模式下获取 json 数组并将数据(名称)分配给列表视图 这是我的 Home.java 代码: 包 com.example.raheel.bank;
public class Home extends AppCompatActivity implements HomeCallBack {
ListView listView;
private ListAdapter mAdapter;
p public ArrayList<String > info;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
listView=(ListView)findViewById(R.id.Listview);
int id=0;
}
BackgroundHome home=new BackgroundHome(Home.this, (Callback)Home. this);
@Override
public void processData(JSONArray data)
{
if(data!=null)
{
info=new ArrayList<>();
try
{
for(int i=0;i<data.length();i++)
{
JSONObject js=data.getJSONObject(i);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
mAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,info);
listView.setAdapter(mAdapter);
}
}
class BackgroundHome extends AsyncTask<Integer,Integer,JSONArray>{
Context c;
Callback callback;
public BackgroundHome(Context c, Callback callback) {
this.c = c;
this.callback = callback;
}
@Override
protected JSONArray doInBackground(Integer...params) {
JSONArray js=null;
String url=c.getString(R.string.url) +"Home.php";
try {
HttpRequest httpRequest = new HttpRequest(url);
HashMap<String, String> values = new HashMap<>();
values.put("id", Integer.toString(params[0]));
js = httpRequest.prepare(HttpRequest.Method.POST).withData(values).sendAndReadJSONArray();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return js;
}
protected void onPostExecute(JSONArray jsonArray){
HomeCallBack.processData(jsonArray);
}
}
interface HomeCallBack{
public void processData(JSONArray data);
}
这是 Home.java 文件,但我不知道如何从 php 文件中获取名称的 json 数组。
【问题讨论】:
-
上面的代码能用吗?听起来您的问题不在于 PHP 部分,而在于 Android 列表视图部分?
-
是的,我有一个用于测试的 html 文件,当我将 Name_id 放入其中时,它会显示关于该 id 的唯一名称
-
那么您应该更新您的问题并显示您实际遇到问题的代码。没有理由向我们展示有效的代码。问题应该是:“如何使用 json 数组中的数据填充列表视图”。它来自 PHP 的事实与问题无关。
-
这里是java代码@MagnusEriksson
标签: php android json listview android-asynctask