2016-04-15 4 views
0

Теперь я работаю над проектом онлайн-базы данных Android. Я создаю приложение, которое может подключаться к онлайн-базе данных и доводить информацию до пользователя. Так как я не слишком хорошо знаком с java и кодом JSON, я просматриваю в Интернете и stackoverflow, и я нахожу этот код ниже. Но я не слишком понимаю с кодом, что я спрашиваю: a. Где я должен поставить код JSON? b. Является ли это кодом для приема данных из таблицы категорий в онлайн-базе данных? c. Где я могу разместить URL-адрес моей онлайн-базы данных?Нужна помощь JSON на базе Android Online

Пожалуйста, помогите мне сэр.

NB. Это код:

public class HomeFragment extends Fragment implements InternetConnectionListener, ApiHandler.ApiHandlerListener { 

private static final String ARG_SECTION_NUMBER = "section_number"; 
private final int CATEGORY_ACTION = 1; 
private CategorySelectionCallbacks mCallbacks; 
private ArrayList<Category> categoryList; 
private ListView categoryListView; 
private InternetConnectionListener internetConnectionListener; 

public HomeFragment() { 

} 

public static HomeFragment newInstance(int sectionNumber) { 
    HomeFragment fragment = new HomeFragment(); 
    Bundle args = new Bundle(); 
    args.putInt(ARG_SECTION_NUMBER, sectionNumber); 
    fragment.setArguments(args); 
    return fragment; 
} 

@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 
    ((HomeActivity) activity).onSectionAttached(getArguments().getInt(ARG_SECTION_NUMBER)); 
    try { 
     mCallbacks = (CategorySelectionCallbacks) activity; 
    } catch (ClassCastException e) { 
     throw new ClassCastException("Activity must implement CategorySelectionCallbacks."); 
    } 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_home, container, false); 
    categoryListView = (ListView) rootView.findViewById(R.id.categoryListView); 
    return rootView; 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    if (UtilMethods.isConnectedToInternet(getActivity())) { 
     initCategoryList(); 
    } else { 
     internetConnectionListener = (InternetConnectionListener) HomeFragment.this; 
     showNoInternetDialog(getActivity(), internetConnectionListener, 
       getResources().getString(R.string.no_internet), 
       getResources().getString(R.string.no_internet_text), 
       getResources().getString(R.string.retry_string), 
       getResources().getString(R.string.exit_string), CATEGORY_ACTION); 
    } 

} 

//! function for populate category list 
private void initCategoryList() { 

    /** 
    * json is populating from text file. To make api call use ApiHandler class 
    * 
    * <CODE>ApiHandler apiHandler = new ApiHandler(this, URL_GET_CATEGORY);</CODE> <BR> 
    * <CODE>apiHandler.doApiRequest(ApiHandler.REQUEST_GET);</CODE> <BR> 
    * 
    * You will get the response in onSuccessResponse(String tag, String jsonString) method 
    * if successful api call has done. Do the parsing as the following. 
    */ 

    String jsonString = loadJSONFromAsset(getActivity(), "get_category_id_list"); 
    try { 
     JSONArray jsonArray = new JSONArray(jsonString); 
     categoryList = new ArrayList<Category>(); 

     for (int i = 0; i < jsonArray.length(); i++) { 
      Category category = new Category();// buat variabel category 

      category.setId(jsonArray.getJSONObject(i).getString(JF_ID)); 
      category.setTitle(jsonArray.getJSONObject(i).getString(JF_TITLE)); 
      category.setIconUrl(jsonArray.getJSONObject(i).getString(JF_ICON)); 

      if (!TextUtils.isEmpty(jsonArray.getJSONObject(i).getString(JF_BACKGROUND_IMAGE))) { 
       category.setImageUrl(jsonArray.getJSONObject(i).getString(JF_BACKGROUND_IMAGE)); 
      } 
      categoryList.add(category); 
     } 

     getActivity().runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       categoryListView.setAdapter(new CategoryAdapter(getActivity(), mCallbacks, categoryList)); 
      } 
     }); 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 

@Override 
public void onConnectionEstablished(int code) { 
    if (code == CATEGORY_ACTION) { 
     initCategoryList(); 
    } 
} 

@Override 
public void onUserCanceled(int code) { 
    if (code == CATEGORY_ACTION) { 
     getActivity().finish(); 
    } 
} 

//! catch json response from here 
@Override 
public void onSuccessResponse(String tag, String jsonString) { 
    //! do same parsing as done in initCategoryList() 
} 

//! detect response error here 
@Override 
public void onFailureResponse(String tag) { 

} 

//! callback interface listen by HomeActivity to detect user click on category 
public static interface CategorySelectionCallbacks { 
    void onCategorySelected(String catID, String title); 
} 

}

ответ

0

Я считаю, что этот код поступает из приложения под названием Finder,

Вы должны изменить этот

String jsonString = loadJSONFromAsset(getActivity(), "get_category_id_list"); 

в

ApiHandler apiHandler = new ApiHandler(this, "get_category_id_list"); 
     apiHandler.doApiRequest(ApiHandler.REQUEST_GET); 

Это w ill заставляют файл ApiHandler.java обрабатывать ваш запрос на сервере вместо вызова локального файла JSON в папке с ресурсами. Когда вы закончите. Перейдите к файлу Constants.java и измените значение URL_APB_AP вам API-адрес. Сделайте то же самое со всеми строками, которые вызывают функцию loadJSONFromAsset.

Надеюсь, это вам поможет.

Смежные вопросы