۱۳۹۴/۰۱/۱۶, ۱۲:۳۹ ق.ظ
سلام
وقت بخیر
من برای نمایش یک سری اطلاعات از گریدویو اختصاصی استفاده می کنم با کد های زیر :
برای دریافت اطلاعات از سرور و ذخیره اطلاعات در دیتابیس برنامه هم از AsyncTask استفاده می کنم، در قسمت onProgressUpdate سعی کردم با متد زیر گریدویو رو رفرش کنم :
@Override
protected void onProgressUpdate(String... values) {
new Runnable() {
@Override
public void run() {
refresher();
}
};
super.onProgressUpdate(values);
}
اما متاسفانه کار نمیکنه
کد های کامل برنامه :
برای رفرش گریدویو باید چه دستوراتی و چجوری به کار ببرم؟
وقت بخیر
من برای نمایش یک سری اطلاعات از گریدویو اختصاصی استفاده می کنم با کد های زیر :
کد پیاچپی:
for (int i = 0; i <save; i++) {
Goroh[i]= db.ngoroh("khanevade", i, 1);
model[i]= db.ngoroh("khanevade", i, 11);
}
CustomGrid adapter = new CustomGrid(getActivity(), Goroh, imageId);
grid.setAdapter(adapter);
@Override
protected void onProgressUpdate(String... values) {
new Runnable() {
@Override
public void run() {
refresher();
}
};
super.onProgressUpdate(values);
}
اما متاسفانه کار نمیکنه
کد های کامل برنامه :
کد پیاچپی:
public class Khanevadeh extends Fragment {
private static final String TAG_SUCCESS = "success";
private static final String TAG_PRODUCTS = "products";
private static final String TAG_ID = "id";
private static final String TAG_GOROH = "goroh";
private static final String TAG_ZIRGOROH = "zirgoroh";
private static final String TAG_NAME = "name";
private static final String TAG_MATN = "matn";
private static final String TAG_TASVIR = "tasvir";
private static final String TAG_LIKE = "like";
private static final String TAG_RATE = "rate";
private static final String TAG_MODEL = "model";
private static String url_all_products = "http://aghsatiha.com/bparsi/khanevade_update.php";
JSONParser jParser = new JSONParser();
private database db;
String id;
JSONArray products = null;
GridView grid;
String[] Goroh;
String[] model;
int[] imageId = {
R.drawable.image1,
R.drawable.image2,
R.drawable.image3,
R.drawable.image4,
R.drawable.image5
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// inflate the root view of the fragment
View fragmentView = inflater.inflate(R.layout.khanevadeh, container, false);
db = new database(getActivity());
db.open();
setHasOptionsMenu(true);
id = db.akharinid("khanevade", 0);
grid=(GridView)fragmentView.findViewById(R.id.grid_khanevadeh);
refresher();
return fragmentView;
}
private void refresher() {
int save = db.shgoroh("khanevade");
Goroh = new String [save];
model = new String [save];
for (int i = 0; i <save; i++) {
Goroh[i]= db.ngoroh("khanevade", i, 1);
model[i]= db.ngoroh("khanevade", i, 11);
}
CustomGrid adapter = new CustomGrid(getActivity(), Goroh, imageId);
grid.setAdapter(adapter);
grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if (model[position].equals("1")) {
Intent intent = new Intent(getActivity(), Onvanha_khanevadeh.class);
intent.putExtra("goroh", Goroh[position]);
intent.putExtra("zirgoroh", "0");
startActivity(intent);
} else {
Intent intent = new Intent(getActivity(), Zirgoroh_khanevadeh.class);
intent.putExtra("goroh", Goroh[position]);
startActivity(intent);
}
}
});
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.main, menu);
}
public void showToast(String msg){
Toast.makeText(getActivity(), msg, Toast.LENGTH_SHORT).show();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.refresh:
NetAsync(getView());
return true;
case R.id.copyLink:
showToast("Copy link was clicked.");
return true;
case R.id.share:
showToast("Share was clicked.");
return true;
case R.id.action_settings:
showToast("actionsettings was clicked.");
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public void NetAsync(View view){
new NetCheck().execute();
}
private class NetCheck extends AsyncTask<String,String,Boolean> {
private ProgressDialog nDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
nDialog = new ProgressDialog(getActivity());
nDialog.setMessage("Loading..");
nDialog.setTitle("Checking Network");
nDialog.setIndeterminate(false);
nDialog.setCancelable(true);
nDialog.show();
}
@Override
protected Boolean doInBackground(String... params) {
/**
* Gets current device state and checks for working internet connection by trying Google.
**/
ConnectivityManager cm = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnected()) {
try {
URL url = new URL("http://www.google.com");
HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
urlc.setConnectTimeout(3000);
urlc.connect();
if (urlc.getResponseCode() == 200) {
return true;
}
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return false;
}
@Override
protected void onPostExecute(Boolean result) {
if (result==true) {
nDialog.dismiss();
new ProcessUpdatedb().execute();
} else {
nDialog.dismiss();
Toast.makeText(getActivity(), "مشکل در ارتباط با اینترنت", Toast.LENGTH_SHORT).show();
}
}
}
private class ProcessUpdatedb extends AsyncTask<String, String, JSONObject> {
private ProgressDialog pDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(getActivity());
pDialog.setTitle("Contacting Servers");
pDialog.setMessage("Updating Database ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected JSONObject doInBackground(String... params) {
// Building Parameters
List<NameValuePair> params1 = new ArrayList<NameValuePair>();
params1.add(new BasicNameValuePair("id", id));
JSONObject json = jParser.getJSONFromUrl(url_all_products, params1);
Log.d("All Products: ", json.toString());
try {
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
products = json.getJSONArray(TAG_PRODUCTS);
for (int i = 0; i < products.length(); i++) {
JSONObject c = products.getJSONObject(i);
String id = c.getString(TAG_ID);
String goroh = c.getString(TAG_GOROH);
String zirgoroh = c.getString(TAG_ZIRGOROH);
String name = c.getString(TAG_NAME);
String matn = c.getString(TAG_MATN);
String tasvir = c.getString(TAG_TASVIR);
String like = c.getString(TAG_LIKE);
String rate = c.getString(TAG_RATE);
String model = c.getString(TAG_MODEL);
db.update_khanevade(id, goroh, zirgoroh, name, matn, tasvir, like, rate, model);
}
} else {
// no products found
// Launch Add New product Activity
Intent i = new Intent(getActivity(),MainActivity.class);
// Closing all previous activities
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(String... values) {
new Runnable() {
@Override
public void run() {
refresher();
}
};
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(JSONObject result) {
pDialog.dismiss();
Toast.makeText(getActivity(), "آپدیت شد حالشو ببر پسر", Toast.LENGTH_SHORT).show();
super.onPostExecute(result);
}
}
}
برای رفرش گریدویو باید چه دستوراتی و چجوری به کار ببرم؟