android– 在我的应用程序中使用viewpager

android– 在我的应用程序中使用viewpager,第1张

概述我想在我的应用程序中使用viewpager.我试图在一个月内每天都这样做,但我无法实现解决方案.我想创建具有相同listview概念但不同数据的页面.这是我的代码:publicfinalclassTestFragmentextendsListFragment{privatestaticfinalStringKEY_CONTENT="TestFragment:Conten

我想在我的应用程序中使用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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1101908.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存