Android:获取json数据并将其解析为列表视图

Android:获取json数据并将其解析为列表视图,android,mysql,json,Android,Mysql,Json,我目前正在从事一个android项目,我希望能够按下一个按钮,它将在另一个活动的列表视图中显示用户数据。我现在有它的工作在某种意义上,但它需要我按下两个按钮。一个从mysql数据库获取json数据,另一个将其发送到下一个活动,以便我显示它 我希望有一种方法,这两种方法都可以通过单击一个按钮来运行,或者两种方法都包含在一个方法中 public class MyMainActivity extends AppCompatActivity { String url = "http://192.16

我目前正在从事一个android项目,我希望能够按下一个按钮,它将在另一个活动的列表视图中显示用户数据。我现在有它的工作在某种意义上,但它需要我按下两个按钮。一个从mysql数据库获取json数据,另一个将其发送到下一个活动,以便我显示它

我希望有一种方法,这两种方法都可以通过单击一个按钮来运行,或者两种方法都包含在一个方法中

public class MyMainActivity extends AppCompatActivity {


String url = "http://192.168.20.120";
String json_string;
View v;

//Button to get the data
ImageButton getUserDetailsBtn;

//Button to parse the data
ImageButton parseUserDetailsBtn;

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

    getUserDetailsBtn= (ImageButton)findViewById(R.id.getUserDetailsButton);        

    parseUserDetailsBtn = (ImageButton)findViewById(R.id.parseUserDetailsButton);   

    getUserDetailsBtn.setVisibility(View.GONE); 


}


//
//get user details in app
//
public void getDetails(View view)  {

    new LoadUserDetails().execute();



    parseUserDetailsBtn .setVisibility(View.GONE);
    getUserDetailsBtn= .setVisibility(View.VISIBLE);



}




//Load the user details
class LoadUserDetails extends AsyncTask<Void,Void,String>
{

    String json_url;
    String JSON_STRING;

    @Override
    protected void onPreExecute() {

        json_url = url+"/getUserDetails.php";
    }

    @Override
    protected String doInBackground(Void... voids){

        try{

            URL url = new URL(json_url);
            HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
            InputStream inputStream = httpURLConnection.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            StringBuilder stringBuilder = new StringBuilder();


            while((JSON_STRING = bufferedReader.readLine())!=null)
            {

                stringBuilder.append(JSON_STRING+"\n");
            }

            bufferedReader.close();
            inputStream.close();
            httpURLConnection.disconnect();
            return stringBuilder.toString().trim();

        } catch (MalformedJsonException e){
            e.printStackTrace();
        } catch (IOException e){
            e.printStackTrace();
        }



        return null;
    }

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }


    @Override
    protected void onPostExecute(String result) {
        TextView textview = (TextView) findViewById(R.id.textview);
        textview.setText("");
        json_string = result;

    }
}




//
//parse the data
//
public void parseJSON(View view)
{

    if(json_string==null){
        Toast.makeText(getApplicationContext(), "First get JSON Data", Toast.LENGTH_LONG).show();

    }
    else{
        Intent intent = new Intent(this, ShowUserActivity.class);
        intent.putExtra("json_data", json_string);
        startActivity(intent);

    }


}
公共类MyMainActivity扩展了AppCompatActivity{
字符串url=”http://192.168.20.120";
字符串json_字符串;
观点五;
//按钮获取数据
ImageButton getUserDetailsBtn;
//按钮来解析数据
ImageButton parseUserDetailsBtn;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u my\u main);
getUserDetailsBtn=(ImageButton)findViewById(R.id.getUserDetailsButton);
parseUserDetailsBtn=(ImageButton)findViewById(R.id.parseUserDetailsButton);
getUserDetailsBtn.setVisibility(View.GONE);
}
//
//在应用程序中获取用户详细信息
//
公共void getDetails(视图){
新建LoadUserDetails().execute();
parseUserDetailsBtn.setVisibility(View.GONE);
getUserDetailsBtn=.setVisibility(View.VISIBLE);
}
//加载用户详细信息
类LoadUserDetails扩展了AsyncTask
{
字符串json_url;
字符串JSON_字符串;
@凌驾
受保护的void onPreExecute(){
json_url=url+“/getUserDetails.php”;
}
@凌驾
受保护的字符串背景(无效…无效){
试一试{
URL=新URL(json_URL);
HttpURLConnection HttpURLConnection=(HttpURLConnection)url.openConnection();
InputStream InputStream=httpURLConnection.getInputStream();
BufferedReader BufferedReader=新的BufferedReader(新的InputStreamReader(inputStream));
StringBuilder StringBuilder=新的StringBuilder();
而((JSON_STRING=bufferedReader.readLine())!=null)
{
追加(JSON_字符串+“\n”);
}
bufferedReader.close();
inputStream.close();
httpURLConnection.disconnect();
返回stringBuilder.toString().trim();
}捕获(格式不正确的异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onProgressUpdate(void…值){
super.onProgressUpdate(值);
}
@凌驾
受保护的void onPostExecute(字符串结果){
TextView TextView=(TextView)findViewById(R.id.TextView);
textview.setText(“”);
json_string=结果;
}
}
//
//解析数据
//
公共空解析JSON(视图)
{
if(json_字符串==null){
Toast.makeText(getApplicationContext(),“首先获取JSON数据”,Toast.LENGTH_LONG.show();
}
否则{
Intent Intent=新的Intent(这个,ShowUserActivity.class);
putExtra(“json_数据”,json_字符串);
星触觉(意向);
}
}

onPostExecute
开始
活动,因为
onPostExecute
UI
线程上执行

  @Override
    protected void onPostExecute(String result) {
        TextView textview = (TextView) findViewById(R.id.textview);
        textview.setText("");
        json_string = result;
        if(json_string==null){
            Toast.makeText(getApplicationContext(), "First get JSON Data",     Toast.LENGTH_LONG).show();    
        }
        else{
            Intent intent = new Intent(MyMainActivity.this, ShowUserActivity.class);
            // and change this to MyMainActivity.this
            // this will point to your task instead of Activity
            intent.putExtra("json_data", json_string);
            startActivity(intent);    
        }    
    }

这是我认为会起作用的,但是当我像你一样将它放在onPostExecute()中时,我得到了一个错误,意思是“无法解析构造函数意图”。有什么想法吗?使用
MyMainActivity。这个
而不是
这个
,我很高兴我能帮上忙。编码快乐