如何在单项视图中获得正确的内容

时间:2017-04-10 18:09:53

标签: android jquery json

在我的列表视图中单击项目后,应显示我的单项视图。不幸的是,每当我点击这两个项目中的一个时,就会出现相同的内容。我该如何解决问题并显示正确的内容? 首先,我在主要活动中获得解析数据:

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
ArrayList<productforloc> arrayList;
ListView lv;
private String TAG = MainActivity.class.getSimpleName();
private TextView addressField; //Add a new TextView to your activity_main to display the address
private LocationManager locationManager;
private String provider;
int i = 1;
private ProgressDialog pDialog;
String name;
String image;
String street;
String postalcode;
String musicstyle;
String musicsecond;
String entry;
String opening;
String agegroup;
String urlbtn;
String Fsk;
String city;


// URL to get contacts JSON
private static String url = "http://partypeople.bplaced.net/maptest.json";

ArrayList<HashMap<String, String>> contactList;

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


    pDialog = new ProgressDialog(MainActivity.this);
    pDialog.setMessage("Please wait...");
    pDialog.setCancelable(false);
    pDialog.show();
    arrayList = new ArrayList<>();
    lv = (ListView) findViewById(R.id.lv);
    lv.setOnItemClickListener((AdapterView.OnItemClickListener) this);

    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            new ReadJSON().execute(url);
        }
    });

    final Button popbutton = (Button) findViewById(R.id.popbutton);
    popbutton.setOnClickListener(new View.OnClickListener() {
        @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
        @Override
        public void onClick(View v) {
            if (i == 1) {
                if (popbutton.isPressed()) {
                    popbutton.setBackground(getResources().getDrawable(R.drawable.secondbg));
                    arrayList.clear();
                    url = "http://partypeople.bplaced.net/justpop.json";
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            new ReadJSON().execute(url);
                        }

                    });
                    i = i + 1;
                }
            } else {
                if (popbutton.isPressed()) {
                    popbutton.setBackground(getResources().getDrawable(R.drawable.bg_popbutton));

                    arrayList.clear();
                    url = "http://partypeople.bplaced.net/maptest.json";
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            new ReadJSON().execute(url);
                        }

                    });
                    i = i - 1;
                }
            }


        }
    });



}



class ReadJSON extends AsyncTask<String,Integer,String>{






    @Override
    protected String doInBackground(String... params) {
        return readURL(params[0]);
    }

    @Override
    protected void onPostExecute(String content) {
        if (pDialog.isShowing())
            pDialog.dismiss();
        try{
            JSONObject jo = new JSONObject(content);
            JSONArray ja = jo.getJSONArray("contacts");

            for(int i=0;i<ja.length();i++){
                JSONObject po = ja.getJSONObject(i);
                arrayList.add(new productforloc(
                           image= po.getString("imageurl"),
                           name = po.getString("name"),
                           street = po.getString("street"),
                           postalcode = po.getString("postalcode"),
                           musicstyle = po.getString("musicstyle"),
                           musicsecond = po.getString("musicsecond"),
                            entry = po.getString("entry"),
                           opening = po.getString("opening"),
                            agegroup = po.getString("agegroup"),
                           urlbtn = po.getString("urlbtn"),
                           Fsk = po.getString("Fsk"),
                            city = po.getString("city")

                ));

            }



        } catch (JSONException e) {
            e.printStackTrace();
        }
        CustomListAdapterforloc adapter = new CustomListAdapterforloc(getApplicationContext(),R.layout.model,arrayList);
        lv.setAdapter(adapter);

    }
}



private String readURL(String url){
        StringBuilder content = new StringBuilder();
        try{
            URL uri = new URL(url);
            URLConnection urlConnection = uri.openConnection();
            BufferedReader bufferedReader= new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
            String line;
            while((line = bufferedReader.readLine()) !=null){
                content.append(line+"\n");


            }
            bufferedReader.close();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return content.toString();
    }

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

    Intent intent = new Intent();
    intent.setClass(this,DetailActivity.class);

    intent.putExtra("name",name);
    intent.putExtra("imageurl",image);
    intent.putExtra("street",street);
    intent.putExtra("postalcode",postalcode);
    intent.putExtra("musicstyle",musicstyle);
    intent.putExtra("musicsecond",musicsecond);
    intent.putExtra("entry",entry);
    intent.putExtra("opening",opening);
    intent.putExtra("agegroup",agegroup);
    intent.putExtra("urlbtn",urlbtn);
    intent.putExtra("Fsk",Fsk);
    intent.putExtra("city",city);
    startActivity(intent);
    Toast.makeText(getApplicationContext(),street,Toast.LENGTH_LONG).show();
}

/**
 * Async task class to get json by making HTTP call

    }



*/

}

然后你可以在底部看到内容将被发送到细节,但即使我点击第一个项目,我总是从我的json的第二个项目中获取内容。

1 个答案:

答案 0 :(得分:0)

更改STLIBPATH_MYLIB方法,从列表中获取正确的对象。

onItemClick