gpt4 book ai didi

android - 单击刷新按钮刷新 Activity 内容

转载 作者:行者123 更新时间:2023-11-30 04:25:46 25 4
gpt4 key购买 nike

我正在构建一个演示应用程序,其中包含 Google mapView 上所有用户的图钉。我从服务器上的一个 php 文件中获取这些用户的数据。 php 文件返回一个 JSONArray 的 JSONObjects & 每个 JSONObject 都有一个单独用户的数据。我明白了,并将用户在 map 上的位置定位为 map 别针。它看起来 ->

GoogleMapView-> This !

public class GoogleMapActivity extends MapActivity implements ActionBar {

Button btnOnMapList, btnProfileHome, btnRefresh;
Intent intent;
GoogleMapActivity gMapActi;

private JSONArray jArray;
private JSONObject jFan_Data;
private ItemBean bean;
private FansData fansdata;//reference of FansData class that return me JSONArray

HelloItemizedOverlay itemizedOverlay;//..........

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {

btnProfileHome = (Button) findViewById(R.id.btn_profile_home);
btnOnMapList = (Button) findViewById(R.id.btn_list_home);
btnRefresh = (Button) findViewById(R.id.btn_refresh_home);

super.onCreate(savedInstanceState);
setContentView(R.layout.googlemapactivity);
MapView mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
mapView.displayZoomControls(true);
// mapView.setSatellite(true);

/**TG_1 -> Here i write code to get my current location(e.g., through LocationManager)
* after getting location, i write my location`s latitude & longitude into
* shearedPreference */

//geading preference to get my unique id
SharedPreferences myUid=GoogleMapActivity.this.getSharedPreferences("uid", MODE_WORLD_READABLE);
String myId=myUid.getString("myId", "");
Log.i("MyUid", myId);

/**Calling "jFansData" method of "FansData" class, that return me JSONArray that
* have JSONObjects as its elements & each JSONObject is the complete data of one Unique
* Fan Near you. currently i use hard codded lat & lang are
*/
fansdata=new FansData();
jArray=fansdata.jFanDataArray(1000, 12.9716060, 77.5903760, "h9ow0");
System.out.println(jArray.toString());

//to showing fans on map as pins
Drawable drawable = this.getResources().getDrawable(
R.drawable.small_football_icon);
HelloItemizedOverlay itemizedOverlay = new HelloItemizedOverlay(
drawable, getParent());
for(int i=0;i<jArray.length();i++){
try {
jFan_Data=jArray.getJSONObject(i);

//.........Code Showing different ways of How we can convert one double type value into String type!
try {
System.out.println("Normal"+jFan_Data.getDouble("lat"));
Double lat=new Double(jFan_Data.getDouble("lat"));
System.out.println("fm_Dbl_Wpr"+lat);
System.out.println("wpr_toStr"+Double.toString(lat));
System.out.println("wpr_toStr_jFan"+Double.toString(jFan_Data.getDouble("lat")));

Log.i("GeoCd_double", Double.toString(lat));
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//.........
GeoPoint geoPoint = new GeoPoint((int) (jFan_Data.getDouble("lat")* 1E6),
(int) (jFan_Data.getDouble("lang")* 1E6));
// GeoPoint geoPoint = new GeoPoint(jFan_Data.getInt("lat"),jFan_Data.getInt("lang"));
//GeoPoint geoPoint = new GeoPoint((int)(jFan_Data.getInt("lat")*1E6), (int)(jFan_Data.getInt("lang")*1E6));

OverlayItem overlayitem = new OverlayItem(geoPoint, jFan_Data.getString("name"),
jFan_Data.getString("uniqid"));
itemizedOverlay.addOverlay(overlayitem);

} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}


List<Overlay> mapOverlays = mapView.getOverlays();


// Second Overlay
Drawable drawable2 = this.getResources().getDrawable(
R.drawable.small_football_icon_yellow);

HelloItemizedOverlay itemizedOverlay2 = new HelloItemizedOverlay(
drawable2, getParent());

GeoPoint geoPoint4 = new GeoPoint(35410000, 139460000);
OverlayItem overlayItem4 = new OverlayItem(geoPoint4, "Nidhi", "");
itemizedOverlay2.addOverlay(overlayItem4);

GeoPoint geoPoint5 = new GeoPoint((int) (41.51738 * 1E6),
(int) (-0.08186 * 1E6));
OverlayItem overlayItem5 = new OverlayItem(geoPoint5, "Sapan", "");
itemizedOverlay2.addOverlay(overlayItem5);

mapOverlays.add(itemizedOverlay);
mapOverlays.add(itemizedOverlay2);
}

//.........................

@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}

@Override
public void onHomeList(View view) {
Intent in = new Intent(getParent(), MapPinsList.class);
TabGroupActivity prnt = (TabGroupActivity) getParent();
prnt.startChildActivity("MapPinsList", in);

}

@Override
public void onHomeProfile(View view) {
Intent in = new Intent(getParent(), ProfileActivity.class);
TabGroupActivity prnt = (TabGroupActivity) getParent();
prnt.startChildActivity("ProfileActivity", in);

}

@Override
public void onHomeRefresh(View view) {
// TODO Auto-generated method stub

//???????????

//super.onCreate(null);
}

@Override
public void onListMap(View view) {
// TODO Auto-generated method stub

}

@Override
public void onListProfile(View view) {
// TODO Auto-generated method stub

}

}

它在这个 View 上有一个 actionBar,上面有三个图像按钮(刷新、列表和配置文件)。当我点击“列表”时,它会在一个“ ListView ”中显示 mapPins。我有一个适配器(LazyAdapter extends BaseAdapter)。

listView-> this !

public class MapPinsList extends ListActivity implements OnItemClickListener,ActionBar {

ListView mFansListView;
JSONArray jArray;//jArray that contains jobjects of all fans. each jobj hv data of 1 unique fan!
JSONObject jFan_Data;//contain data of an indivisual fan
JSONObject jFansData;//contain data of an all fans
//ListViewCustomAdapter adapter;//gc
LazyAdapter adapter;
private ArrayList<Object> fansList;
private ArrayList<String> mStrings ;
private ItemBean bean;
private FansData fansData;
String url="http://192.168.200.111/ManU/";

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.on_pins_list_clicks);

prepareArrayLits();

// mFansListView = (ListView) findViewById(R.id.listView1);
mFansListView = (ListView) findViewById(android.R.id.list);
adapter = new LazyAdapter(this, mStrings, fansList);
mFansListView.setAdapter(adapter);// come null pointer exception when no fan data is returned! hendle it...

mFansListView.setOnItemClickListener(this);
}

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) {
// TODO Auto-generated method stub
ItemBean bean = (ItemBean) adapter.getItem(position);

//retrieve MyUniqueId from sheared Preferences
SharedPreferences myUid=MapPinsList.this.getSharedPreferences("uid", MODE_WORLD_READABLE);
String myId=myUid.getString("myId", "");

Toast.makeText(this,"MyUId->"+ myId+"\nFanId => " + bean.getUid() +" \n UID => " + bean.getTitle(), Toast.LENGTH_SHORT).show();

/**from here-> I am going to start one activity that show the complete profile of a
* particular Fan... According to the unique id received from clicking on ListItem!
*/
for(int i=0;i<jArray.length();i++){
try {
JSONObject jFan_Data=jArray.getJSONObject(i);
String fanId=jFan_Data.getString("uniqid");

if(fanId.equals(bean.getUid())){
//New Intent that start new Activity that show Profile of a Fan


Intent in= new Intent(getParent(), FanProfile.class);
TabGroupActivity prnt = (TabGroupActivity) getParent();
Bundle fBundle= new Bundle();
//fBundle.putStringArray("jFanData", jFanData);
fBundle.putString("fanId", fanId);
in.putExtras(fBundle);
prnt.startChildActivity("FanProfile", in);

//startActivity(in);

}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

/** Method used to prepare the ArrayList, Same way, you can also do looping
* and adding object into the ArrayList.
*/

/** Method used to prepare the ArrayList */
public void prepareArrayLits() {

/** I read shearedPreference to get my location`s latitude, longitude &
* myUniqueId */
//......

fansData = new FansData();

//return me array containing data of all fans
jArray = fansData.jFanDataArray(1000, 12.9716060, 77.5903760, "h9ow0");

/**preserving this jArray into preference so that i can recieve it any where
* when i want the data of all fans like in GooglwMapActivity when i tap on pins...
* I store it in the String formate...But when i get it from preference i can
* build one JSONArray by passing this String as parameter as
* SharedPreferences fansData=GoogleMapActivity.this.getShearedPrefrences("jArray",MODE_WORLD_READABLE);
* String jArr=JArray.getString("allFansData","");
* -> new JSONArray(jArr); will return me complete jArray same as that of here in MapPinsList!!!
* */

SharedPreferences fansData = getSharedPreferences("jArray", MODE_WORLD_READABLE);
SharedPreferences.Editor edit = fansData.edit();
edit.putString("allFansData", jArray.toString());
edit.commit();

// ++++++++
try {
//Initializing ArrayList
fansList = new ArrayList<Object>();
mStrings = new ArrayList<String>();
for (int i = 0; i < jArray.length(); i++) {
// will return the data of each row fetched from JSONArray returned by location1.php
String data_of_each_user = jArray.get(i).toString();

Log.i("Data Of User at index " + i + " is", data_of_each_user);

// I put the object at index "i" into JSONObject & retrieve data from name-value pair
jFan_Data = jArray.getJSONObject(i);// data of User at index i
// in array

AddObjectToList(jFan_Data.getString("uniqid").toString(), jFan_Data.getString("name"),
jFan_Data.getString("distance"));

Log.i("URL", url+"images/"+jFan_Data.get("uniqid").toString()+".png");
mStrings.add(url+"images/"+jFan_Data.get("uniqid").toString()+".png");
Log.i("URL....", url+"images/"+jFan_Data.get("uniqid").toString()+".png");

String nm = jFan_Data.get("name").toString();
String uid = jFan_Data.get("uniqid").toString();
String dis = jFan_Data.get("distance").toString();

System.out.println("Your Name: " + nm);
System.out.println("Your Unique Id: " + uid);
System.out.println("Your Distance: " + dis);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
// ++++++++++
}

// Add one item into the Array List
public void AddObjectToList(String uid, String title, String desc) {
bean = new ItemBean();
bean.setUid(uid);
bean.setDescription(desc);
bean.setTitle(title);
fansList.add(bean);
}

@Override
public void onHomeList(View view) {
// TODO Auto-generated method stub
}

@Override
public void onHomeProfile(View view) {
// TODO Auto-generated method stub
}

@Override
public void onHomeRefresh(View view) {
// TODO Auto-generated method stub
}

@Override
public void onListMap(View view) {
Intent in = new Intent(getParent(), GoogleMapActivity.class);
TabGroupActivity prnt = (TabGroupActivity) getParent();
prnt.startChildActivity("GoogleMapActivity", in);
}

@Override
public void onListProfile(View view) {
// TODO Auto-generated method stub
Intent in = new Intent(getParent(), ProfileActivity.class);
TabGroupActivity prnt = (TabGroupActivity) getParent();
prnt.startChildActivity("ProfileActivity", in);
}

}

我需要的是当我在这些 View 上单击刷新按钮时我的 Activity 内容得到刷新! ...?

JSONArray 的内容因我当前位置而异,当我单击刷新按钮时,它会再次查看我的数据(例如,我当前的纬度和经度,我希望从当前位置看到用户的距离)我写这些在我类(class)的 onCreate 中。现在,当我在这些 View 上单击“刷新”按钮时如何刷新我的内容???

请提出任何建议,将不胜感激任何指针,示例代码来做到这一点

最佳答案

您应该在单击按钮时使用如下所示的 single_Top Intent 标志重新启动您的 Activity 。

Intent intent = new Intent(context,GoogleMapActivity.class);

intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

startactivity(intent);


By this it not call your activity's onCreate() or onResume() but it call onNewIntent().
so do your refresh code inside it as-

onNewIntent(){

// your stuff...

....
}

关于android - 单击刷新按钮刷新 Activity 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8560552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com