TEL:400-8793-956
当前位置:程序、服务器

当我按下单击按钮时,如何只获得一家餐馆

提问者: 近期获赞: 浏览人数: 发布时间:2021-01-03 15:30:39

 问:我有一个应用程序,其中只有一个活动(主要活动),主要活动的布局XML只有 

列表视图。这个应用程式会将餐厅带到我所在地附近,并在清单检视中显示。
我需要做的是将按钮添加到主活动布局中,当我按下按钮时,
从json文件中逐项获取餐厅列表,并在列表视图中显示它,但一键不显示所有餐厅,而是逐项显示
每次点击即可获得餐厅。
 
假设我有一个JSON文件3间餐厅
,当我在按钮的第一次点击单击让我的第一家餐厅
,当我在按钮第二次点击单击让我第二家餐厅
当我点击按钮,第三次点击误会我的第三个餐厅 
如何自定义此代码接受从json文件中逐个餐厅获取项目
我的代码包括类和活动,并且代码运行成功  
我的类是FoursquareVenue
 
package com.foodsmap_project_app.foodsmap_project_app;
public class FoursquareVenue
{
    private String name;
    private String city;
    private String category;
    public FoursquareVenue() {
        this.name = "";
        this.city = "";
        this.setCategory("");
    }
    public String getCity() {
        if (city.length() > 0) {
            return city;
        }
        return city;
    }
    public void setCity(String city) {
        if (city != null) {
            this.city = city.replaceAll("\\(", "").replaceAll("\\)", "");
            ;
        }
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public String getCategory() {
        return category;
    }
    public void setCategory(String category) {
        this.category = category;
    }
}
MainActivity.java
 
public class MainActivity extends ListActivity {
    ArrayList<FoursquareVenue> venuesList;
   final String CLIENT_ID = "SVIBXYYXOEARXHDI4FWAHXGO5ZXOY204TCF1QJFXQLY5FPV4";
    final String CLIENT_SECRET = "BAAJO1KXRWESGTJJGVON4W3WUFHAQDAJPLRIYJJ5OPHFQ5VI";
   final String latitude = "30.435665153239377";
   final String longtitude = "31.3280148";
    ArrayAdapter <String> myAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new fourquare().execute();
    }
    private class fourquare extends AsyncTask<View, Void, String> {
        String temp;
        @Override
        protected String doInBackground(View... urls) {
           
            temp = makeCall("https://api.foursquare.com/v2/venues/search?client_id=" + CLIENT_ID + "&client_secret=" + CLIENT_SECRET + "&v=20130815&ll=30.435665153239377,31.144435908398464" + "&query=resturant");
           
            return "";
        }
        @Override
        protected void onPreExecute() {
        }
        @Override
        protected void onPostExecute(String result) {
            if (temp == null) {
            } else {
                venuesList = (ArrayList<FoursquareVenue>) parseFoursquare(temp);
                List<String> listTitle = new ArrayList<String>();
                for (int i = 0; i < venuesList.size(); i++) {
                    listTitle.add(i, venuesList.get(i).getName() + ", " + venuesList.get(i).getCategory() + "" + venuesList.get(i).getCity());
                }
                myAdapter = new ArrayAdapter<String>(MainActivity.this, R.layout.row_layout, R.id.listText, listTitle);
                setListAdapter(myAdapter);
            }
        }
    }
    public static String makeCall(String url) {
        StringBuffer buffer_string = new StringBuffer(url);
        String replyString = "";
        HttpClient httpclient = new DefaultHttpClient();
        HttpGet httpget = new HttpGet(buffer_string.toString());
        try {
            HttpResponse response = httpclient.execute(httpget);
            InputStream is = response.getEntity().getContent();
            BufferedInputStream bis = new BufferedInputStream(is);
            ByteArrayBuffer baf = new ByteArrayBuffer(20);
            int current = 0;
            while ((current = bis.read()) != -1) {
                baf.append((byte) current);
            }
            replyString = new String(baf.toByteArray());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return replyString.trim();
    }
    private static ArrayList<FoursquareVenue> parseFoursquare(final String response) {
        ArrayList<FoursquareVenue> temp = new ArrayList<FoursquareVenue>();
        try {
            JSONObject jsonObject = new JSONObject(response);
            if (jsonObject.has("response")) {
                if (jsonObject.getJSONObject("response").has("venues")) {
                    JSONArray jsonArray = jsonObject.getJSONObject("response").getJSONArray("venues");
                    for (int i = 0; i < jsonArray.length(); i++) {
                        FoursquareVenue poi = new FoursquareVenue();
                        if (jsonArray.getJSONObject(i).has("name")) {
                            poi.setName(jsonArray.getJSONObject(i).getString("name"));
                            if (jsonArray.getJSONObject(i).has("location")) {
                                if (jsonArray.getJSONObject(i).getJSONObject("location").has("address")) {
                                    if (jsonArray.getJSONObject(i).getJSONObject("location").has("city")) {
                                        poi.setCity(jsonArray.getJSONObject(i).getJSONObject("location").getString("city"));
                                    }
                                    if (jsonArray.getJSONObject(i).has("categories")) {
                                        if (jsonArray.getJSONObject(i).getJSONArray("categories").length() > 0) {
                                            if (jsonArray.getJSONObject(i).getJSONArray("categories").getJSONObject(0).has("icon")) {
                                                poi.setCategory(jsonArray.getJSONObject(i).getJSONArray("categories").getJSONObject(0).getString("name"));
                                            }
                                        }
                                    }
                                    temp.add(poi);
                                }
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            return new ArrayList<FoursquareVenue>();
        }
        return temp;
    }
}
 
 
 
答:只需使用初始值为零的计数器,并在单击按钮时将其递增即可。从列表中获取带有索引号的值作为计数器。
上一篇: 我如何使用php将值插入mysql表的外键中?
下一篇: 首先安装了Android应用