2015-07-24 2 views
0

Я делаю новостное приложение, которое в новостной деятельности имеет ползунок вкладки с двумя вкладками, называемыми «новыми новостями» - «случайными или главными новостями». которые каждый вкладки содержат фрагмент. (Надеюсь, у меня получится!).Android: Использование Listfragment вместо фрагмента

, но проблема в том, им с помощью кода для разбора этого контента страницы>http://aliak.xzn.ir/rap/get_all_products.php (я думаю, что у Findout какой сайт код им с помощью) ...

проблема заключается в том, что если я хочу, чтобы показать это в фрагменте (не деятельность) я должен написать этот код:

public class tab1 extends ListFragment {} 

вместо этого:

public class tab1 extends Fragment {} 

и я адаптер пейджера у меня есть проблема, которая говорит мне listfragment не принято! и если я не использую фрагмент списка, у меня много ошибок!

Коды APP:

мой фрагмент tab1 ::

public class tab1 extends ListFragment { 

    //static final String url_all_products = "http://aliak.xzn.ir/rap/get_all_products.php"; 
    // Progress Dialog 
    private ProgressDialog pDialog; 

    // Creating JSON Parser object 
    JSONParser jParser = new JSONParser(); 

    ArrayList<HashMap<String, String>> productsList; 

    // url to get all products list 
    final String TAG_SUCCESS = "success"; 
    final String TAG_PRODUCTS = "products"; 
    final String TAG_PID = "pid"; 
    final String TAG_NAME = "name"; 

    // JSON Node names 


    // products JSONArray 
    JSONArray products = null; 

    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.tab_1, container, false); 


     /** 
     * Background Async Task to Load all product by making HTTP Request 
     */ 
     class LoadAllProducts extends AsyncTask<String, String, String> { 

      /** 
      * Before starting background thread Show Progress Dialog 
      */ 
      @Override 
      protected void onPreExecute() { 
       super.onPreExecute(); 
       pDialog = new ProgressDialog(getActivity()); 
       pDialog.setMessage("درحال دريافت اخبار،کمي صبر کنيد!"); 
       pDialog.setIndeterminate(false); 
       pDialog.setCancelable(false); 
       pDialog.show(); 
      } 


      /** 
      * getting All products from url 
      */ 
      protected String doInBackground(String... args) { 
       // Building Parameters 
       List<NameValuePair> params = new ArrayList<NameValuePair>(); 
       // getting JSON string from URL 
       JSONObject json = jParser.makeHttpRequest("http://aliak.xzn.ir/rap/get_all_products.php", "GET", params); 

       // Check your log cat for JSON reponse 
       Log.d("All Products: ", json.toString()); 

       try { 
        // Checking for SUCCESS TAG 
        int success = json.getInt(TAG_SUCCESS); 

        if (success == 1) { 
         // products found 
         // Getting Array of Products 
         products = json.getJSONArray(TAG_PRODUCTS); 

         // looping through All Products 
         for (int i = 0; i < products.length(); i++) { 
          JSONObject c = products.getJSONObject(i); 

          // Storing each json item in variable 
          String id = c.getString(TAG_PID); 
          String name = c.getString(TAG_NAME); 

          // creating new HashMap 
          HashMap<String, String> map = new HashMap<String, String>(); 

          // adding each child node to HashMap key => value 
          map.put(TAG_PID, id); 
          map.put(TAG_NAME, name); 

          // adding HashList to ArrayList 
          productsList.add(map); 
         } 
        } else { 
         // no products found 
         // Launch Add New product Activity 
         Intent i = new Intent(getActivity().getApplicationContext(), 
           Main.class); 
         // Closing all previous activities 
         i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         startActivity(i); 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 

       return null; 
      } 

      /** 
      * After completing background task Dismiss the progress dialog 
      * * 
      */ 

      protected void onPostExecute(String file_url) { 
       // dismiss the dialog after getting all products 
       pDialog.dismiss(); 
       // updating UI from Background Thread 
       getActivity().runOnUiThread(new Runnable() { 
        public void run() { 
         /** 
         * Updating parsed JSON data into ListView 
         * */ 
         ListAdapter adapter = new SimpleAdapter(
           getActivity(), productsList, 
           R.layout.list_item, new String[]{TAG_PID, 
           TAG_NAME}, 
           new int[]{R.id.pid, R.id.name}); 
         // updating listview 
         setListAdapter(adapter); 
        } 
       }); 

      } 


     } 


     productsList = new ArrayList<HashMap<String, String>>(); 


     // Loading products in Background Thread 
     new LoadAllProducts().execute(); 


     return v; 

    } 


} 

мой адаптер Класс:

/** 
* Created by hp1 on 21-01-2015. 
*/ 
public class ViewPagerAdapter extends FragmentStatePagerAdapter { 

CharSequence Titles[]; // This will Store the Titles of the Tabs which are Going to be passed when ViewPagerAdapter is created 
int NumbOfTabs; // Store the number of tabs, this will also be passed when the ViewPagerAdapter is created 


// Build a Constructor and assign the passed Values to appropriate values in the class 
public ViewPagerAdapter(FragmentManager fm,CharSequence mTitles[], int mNumbOfTabsumb) { 
    super(fm); 

    this.Titles = mTitles; 
    this.NumbOfTabs = mNumbOfTabsumb; 
} 

//This method return the fragment for the every position in the View Pager 
@Override 
public Fragment getItem(int position) { 


    if (position == 0) // if the position is 0 we are returning the First tab 
    { 
     tab1 tab1 = new tab1(); 
     return tab1; 
    } else    // As we are having 2 tabs if the position is now 0 it must be 1 so we are returning second tab 
    { 
     tab2 tab2 = new tab2(); 
     return tab2; 

    } 


} 
/* 


*/ 


// This method return the titles for the Tabs in the Tab Strip 

@Override 
public CharSequence getPageTitle(int position) { 
    return Titles[position]; 
} 

// This method return the Number of tabs for the tabs Strip 

@Override 
public int getCount() { 
    return NumbOfTabs; 
} 
} 

ЕСЛИ U ТРЕБУЕТСЯ БОЛЬШЕ КОДЫ ПРОСТО СКАЖИ, ILL ОТВЕТ В 2 МИНУТАХ!

+0

Все вкладки в FragmentStatePagerAdapter должны быть одного типа, поэтому ваше единственное решение - просто сделать его фрагментом с ListView внутри него, если вы не хотите, чтобы обе закладки были ListFragments. –

+0

@ DanielNugent, woooooow u просто решил! когда приложение превратилось в плохое имя ur в нем! плохо предупреждаю, большое спасибо! – AliAk

+0

Ницца! Рад, что ты заработал! –

ответ

1

проверьте свои импортные товары и убедитесь, что ваш фрагмент и список имеют один и тот же пакет, то есть оба файла android.support.v4.app.Fragment/ListFragment или оба файла android.app.Fragment/ListFragment. Какой бы вы ни использовали, он должен соответствовать вашим действительным реализациям класса фрагмента.

+0

Нет, я все три и все эти, и я всегда уверен, что импоты. – AliAk

+0

, и вы абсолютно уверены, что импортируете FragmentStatePagerAdapter, FragmentManager, Fragment и ListFragment из поддержки (или нет)? Не могли бы вы отправить сообщение об ошибке, которое дает IDE при попытке вернуть ListFragment? – amo

+0

Да, я уверен, что я импортировал из поддержки v4, и проблема в том, что он (когда я держусь за возвращение, я думаю). >> required: import android.support.v4.app.Fragment; найдено: import rappage.rapfarsi.media.appteam.tab1; и я включил перекрестный список даже, я сделал все, все ... но если я использую в java-активности не фрагмент, у меня нет ошибки нет ... – AliAk

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