
我想在我的应用程序中使用vIEwpager.我试图在一个月内每天都这样做,但我无法实现解决方案.我想创建具有相同ListvIEw概念但不同数据的页面.这是我的代码:
public final class TestFragment extends ListFragment {private static final String KEY_CONTENT = "TestFragment:Content";ArrayList <HashMap<String, Object>> imageListe = new ArrayList<HashMap<String, Object>>();public class MyCustomAdapter extends ArrayAdapter<HashMap<String, Object>> { //Bitmap bm; public MyCustomAdapter(Context context, int textVIEwResourceID, ArrayList<HashMap<String,Object>> imageListe) { super(context, textVIEwResourceID,imageListe); // Todo auto-generated constructor stub } @OverrIDe public VIEw getVIEw(int position, VIEw convertVIEw, VIEwGroup parent) { // Todo auto-generated method stub //return super.getVIEw(position, convertVIEw, parent); VIEw row = convertVIEw; if(row==null){ LayoutInflater inflater=LayoutInflater.from(getActivity()); row=inflater.inflate(R.layout.List, parent, false); } TextVIEw label=(TextVIEw)row.findVIEwByID(R.ID.text1); label.setText((CharSequence) imageListe.get(position).get("Baslik")); TextVIEw label2=(TextVIEw)row.findVIEwByID(R.ID.text2); int boyut =imageListe.get(position).get("Desc").toString().length(); label2.setText((CharSequence) imageListe.get(position).get("Desc").toString().substring(0, (boyut/3)*2)+"..."); ImageVIEw icon=(ImageVIEw)row.findVIEwByID(R.ID.img); icon.setimageDrawable((Drawable) imageListe.get(position).get("Resim")); return row; } }public String getURLContent(String url){ try { DefaulthttpClIEnt httpClIEnt = new DefaulthttpClIEnt(); httpGet httpGet = new httpGet(url); ResponseHandler<String> resHandler = new BasicResponseHandler(); String page = httpClIEnt.execute(httpGet, resHandler); return page; } catch (ClIEntProtocolException e) { return ""; } catch (IOException e) { return ""; }}public ArrayList<HashMap<String, Object>> getimagelinks(String strng){ ArrayList<HashMap<String, Object>> myBooks2 = new ArrayList<HashMap<String, Object>>(); String HTML = getURLContent(strng); document doc = Jsoup.parse(HTML); Elements divs = doc.getElementsByClass("postBox"); for (Element div : divs) { Element masthead = div.select("img[src].attachment-post-thumbnail").first(); String linkhref = masthead.attr("src"); Element masthead2 = div.select("h1").first().select("a").first(); String baslik = masthead2.text(); Element masthead3 = div.select("div.textPrevIEw").first().select("p").first(); String desc = masthead3.text(); //Drawable drawable = LoadImageFromWebOperations(); HashMap<String, Object> hm = new HashMap<String, Object>(); hm.put("Resim", LoadImageFromWebOperations(linkhref)); hm.put("Baslik", baslik); hm.put("Desc", desc); myBooks2.add(hm); } return myBooks2;}private Drawable LoadImageFromWebOperations(String url){ try{ inputStream is = (inputStream) new URL(url).getContent(); Drawable d = Drawable.createFromStream(is, "src name"); return d; }catch (Exception e) { System.out.println("Exc="+e); return null; } }public class backgroundLoadListVIEw extends AsyncTask<String, VoID, VoID> { private ProgressDialog dialog = new ProgressDialog(getActivity()); @OverrIDe protected voID onPostExecute(VoID result) { // Todo auto-generated method stub // adapter = new MyCustomAdapter( getActivity().getApplicationContext(), R.layout.List, imageListe); //adapter.notifyDataSetChanged(); dialog.dismiss(); } @OverrIDe protected voID onPreExecute() { // Todo auto-generated method stub dialog.setMessage("Yükleniyor..."); dialog.show(); } @OverrIDe protected VoID doInBackground(String... arg) { // Todo auto-generated method stub imageListe=getimagelinks(arg[0]); return null; }}public class backgroundLoadListVIEw2 extends AsyncTask<VoID, VoID, VoID> { @OverrIDe protected voID onPostExecute(VoID result) { // Todo auto-generated method stub LayoutInflater inflater = LayoutInflater.from(getActivity()); VIEw vIEw = inflater.inflate(R.layout.customslIDingtabhost, null); ListVIEw ListVIEw1=(ListVIEw)vIEw.findVIEwByID(R.ID.List); //MyCustomAdapter adapter = new MyCustomAdapter(getActivity(), R.layout.List, imageListe); //ListVIEw1.setAdapter(adapter); int[] colors = {0xFFFFFFFF, 0xFF87CEEB, 0xFFFFFFFF}; // red for the example ListVIEw1.setdivIDer(new GradIEntDrawable(OrIEntation.RIGHT_left, colors)); ListVIEw1.setdivIDerHeight(2); ListVIEw1.setBackgroundcolor(color.WHITE); ((PullToRefreshListVIEw) ListVIEw1).onRefreshComplete(); } @OverrIDe protected voID onPreExecute() { // Todo auto-generated method stub } @OverrIDe protected VoID doInBackground(VoID... params) { // Todo auto-generated method stub imageListe=getimagelinks("http://www.teknoinfo.net/kategoriler/haberler/teknoloji-haberleri"); return null; }}public static TestFragment newInstance(String content) { TestFragment fragment = new TestFragment(); return fragment;}private String mContent = "???";@OverrIDepublic VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container, Bundle savedInstanceState) { if ((savedInstanceState != null) && savedInstanceState.containsKey(KEY_CONTENT)) { mContent = savedInstanceState.getString(KEY_CONTENT); } //new backgroundLoadListVIEw().execute("http://www.teknoinfo.net/haberler"); MyCustomAdapter adapter = new MyCustomAdapter( getActivity().getApplicationContext(), R.layout.List, imageListe); VIEw vIEw = inflater.inflate(R.layout.customslIDingtabhost, null); final ListVIEw v=(ListVIEw)vIEw.findVIEwByID(R.ID.List); /*((PullToRefreshListVIEw) v).setonRefreshListener(new OnRefreshListener() { public voID onRefresh() { // Do work to refresh the List here. new backgroundLoadListVIEw2().execute(); } });*/ int[] colors = {0xFFFFFFFF, 0xFF87CEEB, 0xFFFFFFFF}; // red for the example v.setdivIDer(new GradIEntDrawable(OrIEntation.RIGHT_left, colors)); v.setdivIDerHeight(2); v.setBackgroundcolor(color.WHITE); v.setAdapter(adapter); ((PullToRefreshListVIEw) v).setonRefreshListener(new OnRefreshListener() { public voID onRefresh() { // Do work to refresh the List here. //new backgroundLoadListVIEw2().execute(); // new backgroundLoadListVIEw().execute("http://www.teknoinfo.net/haberler"); } }); return vIEw;}@OverrIDepublic voID onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState);}@OverrIDepublic voID onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putString(KEY_CONTENT, mContent);}}
解决方法:
很难处理你发布的所有代码(其中大部分与你的问题无关),但据我所知,你甚至没有从代码中设置VIEwPager,或者它隐藏在某些XML文件中你没有发帖.
您需要做的是创建一个VIEwPager实例.例如,在片段的XML布局文件中,例如:
<androID.support.v4.vIEw.VIEwPager androID:ID="@+ID/pager" androID:layout_wIDth="fill_parent" androID:layout_height="0dp" androID:layout_weight="1" />现在,在Fragment中创建一个适配器,指定所需的页面(类似于listadapter如何指定ListVIEw的项目).为此,创建一个继承自PagerAdapter的类(您可以在Fragment代码中内联).例如,类似于:
private class MyPagerAdapter extends PagerAdapter implements TitleProvIDer { private ListVIEw pagerListVIEw1; private ListVIEw pagerListVIEw2; public MyPagerAdapter() { LayoutInflater inflater = getActivity().getLayoutInflater(); pagerListVIEw1 = (ListVIEw) inflater.inflate(R.layout.fragment_pagerList, null); pagerListVIEw2 = (ListVIEw) inflater.inflate(R.layout.fragment_pagerList, null); } @OverrIDe public int getCount() { return 2; } @OverrIDe public Object instantiateItem(VIEw container, int position) { switch (position) { case 0: ((VIEwPager) container).addVIEw(pagerListVIEw1, 0); return pagerListVIEw1; case 1: ((VIEwPager) container).addVIEw(pagerListVIEw2, 0); return pagerListVIEw2; } return null; } @OverrIDe public voID destroyItem(VIEw container, int position, Object object) { ((VIEwPager) container).removeVIEw((VIEw) object); } @OverrIDe public boolean isVIEwFromObject(VIEw vIEw, Object object) { return vIEw == (VIEw) object; } @OverrIDe public voID finishUpdate(VIEw container) { } @OverrIDe public Parcelable saveState() { return null; } @OverrIDe public voID startUpdate(VIEw container) { } @OverrIDe public voID restoreState(Parcelable state, ClassLoader loader) { }}请注意,我在此寻呼机中硬编码了2个页面/列表.您可以像使用任何其他ListVIEw一样填充它们.页面布局只是一个简单的ListVIEw,它从fragment_pagerList XML文件中膨胀,看起来像:
<?xml version="1.0" enCoding="utf-8"?><ListVIEw xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:ID="@+ID/List" androID:layout_height="match_parent" androID:layout_wIDth="match_parent" androID:cachecolorHint="@color/Backgroundlight" />最后,将VIEwPager的适配器绑定到onActivityCreated方法的某个位置:
@OverrIDepublic voID onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); VIEwPager pager = (VIEwPager) getVIEw().findVIEwByID(R.ID.pager); pager.setAdapter(new MyPagerAdapter());}请注意,这还没有为您提供VIEwPagerIndicator.查看杰克沃顿的优秀图书馆.
如果您希望代码在VIEwPager和VIEwPagerIndicator中具有完全实现和工作的版本,以及多个列表(和其他视图),请查看AndroID项目的开源RateBeer;特别是http://code.google.com/p/ratebeerforandroid/source/browse/RateBeerForAndroid/src/com/ratebeer/android/gui/fragments/SearchFragment.java#486用于真实世界的PagerAdapter.
总结以上是内存溢出为你收集整理的android – 在我的应用程序中使用viewpager全部内容,希望文章能够帮你解决android – 在我的应用程序中使用viewpager所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)