android– 从listview获取下一个和上一个详细数据

android– 从listview获取下一个和上一个详细数据,第1张

概述我不知道如何通过单击基于listview的下一个/上一个按钮来显示下一个/上一个详细数据的功能.这是我想要做的截图MylistviewActivityMyDetaildataActivity,显示listview中的下一个/上一个数据编辑:我有一个listview数据(使用xml解析器),并将数据传递给名为“Detail_toko.clas

我不知道如何通过单击基于ListvIEw的下一个/上一个按钮来显示下一个/上一个详细数据的功能.

这是我想要做的截图

My listview Activity

My Detail data Activity,显示ListvIEw中的下一个/上一个数据

编辑:我有一个ListvIEw数据(使用xml解析器),并将数据传递给名为“Detail_toko.class”的新活动:

                List<nameValuePair> paramemeter = new ArrayList<nameValuePair>();                paramemeter.add(new BasicnameValuePair("keyword", "a"));                  // paramemeter.add(new BasicnameValuePair("kategori",category.getSelectedItem().toString()));                XMLParser parser = new XMLParser();                String xml = parser.getXmlFromUrl(URL, paramemeter); // getting XML from URL                document doc = parser.getDomElement(xml); // getting DOM element                NodeList nl = doc.getElementsByTagname(TAG_DETAIL);                // looPing through all song nodes <song>                for (int i = 0; i < nl.getLength(); i++) {                    // creating new HashMap                    HashMap<String, String> map = new HashMap<String, String>();                    Element e = (Element) nl.item(i);                    // adding each child node to HashMap key => value                    map.put(TAG_ID, parser.getValue(e, TAG_ID));                    map.put(TAG_NAMATOKO, parser.getValue(e, TAG_NAMATOKO));                    map.put(TAG_KATEGORI, parser.getValue(e, TAG_KATEGORI));                    map.put(TAG_EMAIL, parser.getValue(e, TAG_EMAIL));                    map.put(TAG_ICON, parser.getValue(e, TAG_ICON));                    // adding HashList to ArrayList                    PremiumList.add(map);                        }             return null;           }            /**             * Updating parsed JsON data into ListVIEw             * */            List=(ListVIEw)findVIEwByID(R.ID.ListvIEw);            if(PremiumList.size() > 0)                    {                adapter=new LazyAdapterStore(ListPerusahaan.this, PremiumList);                        List.setAdapter(adapter);            }            else                    {                Toast toast= Toast.makeText(getApplicationContext(), "No data found, enter another keyword", Toast.LENGTH_SHORT);                      toast.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER_HORIZONTAL, 0, 0);                    toast.show();                    }                // Click event for single List row                    List.setonItemClickListener(new OnItemClickListener() {                        @OverrIDe                        public voID onItemClick(AdapterVIEw<?> parent, VIEw vIEw,                                int position, long ID) {                            // getting values from selected ListItem                            String nama_toko = ((TextVIEw) vIEw.findVIEwByID(R.ID.nama_toko)).getText().toString();                            String kategori = ((TextVIEw) vIEw.findVIEwByID(R.ID.kategori)).getText().toString();                            String email = ((TextVIEw) vIEw.findVIEwByID(R.ID.email)).getText().toString();                         PremiumList = new ArrayList<HashMap<String, String>>();                         Intent in = new Intent(ListPerusahaan.this, Detail_toko.class);                          in.putExtra("PremiumList", PremiumList);                         //in.putStringArrayListExtra( "PremiumList", PremiumList );                         in.putExtra("position", position);                         in.putExtra("TotalData", TotalData);                         in.putExtra(TAG_NAMATOKO, nama_toko);                         in.putExtra(TAG_KATEGORI, kategori);                         in.putExtra(TAG_EMAIL, email);                         startActivity(in);

这是我的LazyAdapterStore代码:

  public VIEw getVIEw(int position, VIEw convertVIEw, VIEwGroup parent) {    VIEw vi=convertVIEw;    if(convertVIEw==null)        vi = inflater.inflate(R.layout.List_data_store, null);    TextVIEw nama_toko = (TextVIEw)vi.findVIEwByID(R.ID.nama_toko); // Title    TextVIEw kategori = (TextVIEw)vi.findVIEwByID(R.ID.kategori); // Title    ImageVIEw thumb_image=(ImageVIEw)vi.findVIEwByID(R.ID.List_image); // thumb image    TextVIEw email = (TextVIEw)vi.findVIEwByID(R.ID.email); // artist name    HashMap<String, String> detail = new HashMap<String, String>();    detail = data.get(position);    // Setting all values in ListvIEw    nama_toko.setText(detail.get(ListPerusahaan.TAG_NAMATOKO));    kategori.setText(detail.get(ListPerusahaan.TAG_KATEGORI));    email.setText(detail.get(ListPerusahaan.TAG_EMAIL));    imageLoader.displayImage(detail.get(ListPerusahaan.TAG_ICON), thumb_image);    return vi;}

编辑:而且,这是我的新活动“Detail_Toko”,用于显示ListvIEw项目的详细数据:

@OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);  //this must be called BEFORE setContentVIEw    requestwindowFeature(Window.FEATURE_CUSTOM_Title);    setContentVIEw(R.layout.detail_toko);    getwindow().setFeatureInt(Window.FEATURE_CUSTOM_Title, R.layout.window_Title);    call_btn=(button)findVIEwByID(R.ID.call);    email_btn=(button)findVIEwByID(R.ID.email);    sms_btn=(button)findVIEwByID(R.ID.sms);    Next_btn=(button)findVIEwByID(R.ID.Next);    Prev_btn=(button)findVIEwByID(R.ID.Prev);    phonenumber=(TextVIEw)findVIEwByID(R.ID.telpon);    // getting intent data    Intent in = getIntent();   // @SuppressWarnings("unchecked")    //ArrayList<HashMap<String, String>> PremiumList = (ArrayList<HashMap<String, String>>) getIntent().getSerializableExtra("PremiumList");    // Get String values from prevIoUs intent    final String nama_toko = in.getStringExtra(TAG_NAMATOKO);    final String kategori = in.getStringExtra(TAG_KATEGORI);    final String email = in.getStringExtra(TAG_EMAIL);    // Get Int values from prevIoUs intent    final int posisi =  in.getExtras().getInt("position");    final int Total_data =  in.getExtras().getInt("TotalData");   /*    Bundle bundle = in.getExtras();     HashMap<String, String> List = (HashMap<String, String>) bundle.getSerializable("PremiumList");    List = data.get(currentposition);    */    Bundle bundle = in.getExtras();    HashMap<String, String> List =  (HashMap<String, String>) bundle.getSerializable("PremiumList");    List = data.get(currentposition);    // displaying all values on the screen    lblPosisi = (TextVIEw) findVIEwByID(R.ID.namatoko);    lbltotaldata = (TextVIEw) findVIEwByID(R.ID.nama);    lblNamatoko = (TextVIEw) findVIEwByID(R.ID.nama_toko);    lblKategori = (TextVIEw) findVIEwByID(R.ID.kategori);    lblEmail = (TextVIEw) findVIEwByID(R.ID.textemail);    lblPosisi.setText(String.valueOf(posisi));    lbltotaldata.setText(String.valueOf(Total_data));    lblNamatoko.setText(nama_toko);    lblKategori.setText(kategori);    lblEmail.setText(email);    // Set the int value of currentposition from prevIoUs selected ListvIEw item    currentposition = posisi;    Next_btn.setonClickListener(new button.OnClickListener(){      public voID onClick(VIEw v){            if(currentposition >= Total_data - 1)          {              Toast toast= Toast.makeText(getApplicationContext(), "Last Record", Toast.LENGTH_SHORT);                toast.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER_HORIZONTAL, 0, 0);              toast.show();          }          else          {              currentposition++;              lblPosisi.setText(String.valueOf(currentposition));              lblNamatoko.setText(List.get(nama_toko));              lblKategori.setText(List.get(kategori));              lblEmail.setText(List.get(email));          }        }      });    Prev_btn.setonClickListener(new button.OnClickListener(){      public voID onClick(VIEw v){            if(currentposition <= 0)          {              Toast toast= Toast.makeText(getApplicationContext(), "First Record", Toast.LENGTH_SHORT);                toast.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER_HORIZONTAL, 0, 0);              toast.show();          }          else          {              currentposition--;              lblPosisi.setText(String.valueOf(currentposition));              lblNamatoko.setText(List.get(nama_toko));              lblKategori.setText(List.get(kategori));              lblEmail.setText(List.get(email));          }          }     });

问题是,我不知道如何通过单击“Detail_toko”活动中的下一个/上一个按钮来创建一个函数来显示ListvIEw中的下一个/上一个详细数据.
请有人帮我…

预先感谢

解决方法:

刚看到你在上一篇文章中的请求.

Parvaz给出的解决方案是完美的,你只需要弄清楚代码.
你有一个arrayList“PremiumList”,它负责你的ListvIEw行数据.
您所需要的只是将位置和此列表传递给Detail_toko.class(通过意图使用parceable或声明arrayList作为静态(不推荐)等)并且您的解决方案将是几步之遥.

在Detail_toko.class中创建一个全局变量currentposition,它将从过去的活动中获取其值,例如来自intent的TAG_NAMATOKO.
然后在NEXT按钮的onClickListener中将1递增到currentposition,并从刚刚从上一个活动传输的arrayList获取详细信息,就像在getVIEw方法中一样.

 HashMap<String, String> detail = new HashMap<String, String>();    detail = data.get(currentposition);// Setting all values in ListvIEwnama_toko = detail.get(ListPerusahaan.TAG_NAMATOKO);kategori = detail.get(ListPerusahaan.TAG_KATEGORI);email = detail.get(ListPerusahaan.TAG_EMAIL);

设置这些值,您的新视图将相应更新.

在PREVIoUS的onClickListener按钮从currentposition递减1,后跟相同的代码(这意味着你必须创建一个方法并调用它,不重复代码).

试试吧.这是我们可以解释的详细信息,而不实际做功课!

编辑:

首先从OnItemClick中删除此行

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

您正在清除此行中PremiumList的所有数据,这样您将在下一个活动中获得空白列表.所以摆脱这条线.
 一旦你在下一个活动中获得PremiumList,你需要的就是位置和totalData以及额外的intent.
 您可以从额外的意图中删除TAG_NAMATOKO,TAG_KATEGORI,TAG_EMAIL.

我曾告诉过你不要重复这段代码,因为你是初学者,因为它会让你的生活变得轻松,因此非常重要.
 采取这些考虑并使你的习惯.

现在,您在“Detail_Toko”中的代码将变为:

 HashMap<String, String> List = null; int currentposition = 0; int  Total_data =0; @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);  //this must be called BEFORE setContentVIEw    requestwindowFeature(Window.FEATURE_CUSTOM_Title);    setContentVIEw(R.layout.detail_toko);    getwindow().setFeatureInt(Window.FEATURE_CUSTOM_Title, R.layout.window_Title);    call_btn=(button)findVIEwByID(R.ID.call);    email_btn=(button)findVIEwByID(R.ID.email);    sms_btn=(button)findVIEwByID(R.ID.sms);    Next_btn=(button)findVIEwByID(R.ID.Next);    Prev_btn=(button)findVIEwByID(R.ID.Prev);    phonenumber=(TextVIEw)findVIEwByID(R.ID.telpon);// displaying all values on the screen    lblPosisi = (TextVIEw) findVIEwByID(R.ID.namatoko);    lbltotaldata = (TextVIEw) findVIEwByID(R.ID.nama);    lblNamatoko = (TextVIEw) findVIEwByID(R.ID.nama_toko);    lblKategori = (TextVIEw) findVIEwByID(R.ID.kategori);    lblEmail = (TextVIEw) findVIEwByID(R.ID.textemail);    // getting intent data   Bundle bundle = getIntent().getExtras();// Get Int values from prevIoUs intent    currentposition =  bundle.getInt("position");      Total_data =  bundle.getInt("TotalData");    List =  (HashMap<String, String>) bundle.get("PremiumList");    setVIEw();    Next_btn.setonClickListener(new button.OnClickListener(){      public voID onClick(VIEw v){          if(currentposition >= Total_data - 1)          {              Toast toast= Toast.makeText(getApplicationContext(), "Last Record", Toast.LENGTH_SHORT);                toast.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER_HORIZONTAL, 0, 0);              toast.show();          }          else          {             currentposition++;             setVIEw();          }        }      });    Prev_btn.setonClickListener(new button.OnClickListener(){      public voID onClick(VIEw v){            if(currentposition <= 0)          {              Toast toast= Toast.makeText(getApplicationContext(), "First Record", Toast.LENGTH_SHORT);                toast.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER_HORIZONTAL, 0, 0);              toast.show();          }          else          {              currentposition--;              setVIEw();          }        }     });     private voID setVIEw()     {     if(List != null && List.size() > currentposition)     {     HashMap<String, String> detail = new HashMap<String, String>();    detail = List.get(currentposition);     lblPosisi.setText(String.valueOf(currentposition));    lbltotaldata.setText(String.valueOf(Total_data));    lblNamatoko.setText(detail.get(ListPerusahaan.TAG_NAMATOKO));    lblKategori.setText(detail.get(ListPerusahaan.TAG_KATEGORI));    lblEmail.setText(detail.get(ListPerusahaan.TAG_EMAIL));    }    }

建议:使用VIEwHolder在getVIEw方法中填充视图,它将使您的适配器“一个高效的适配器”. (搜索示例)
 遵循命名约定和所有.
 在使用它们之前检查anyObject!= null,它们的大小或长度以及bundle.containKey等东西,以避免像nullPointerException这样的致命异常.

总结

以上是内存溢出为你收集整理的android – 从listview获取下一个和上一个详细数据全部内容,希望文章能够帮你解决android – 从listview获取下一个和上一个详细数据所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1100183.html

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

发表评论

登录后才能评论

评论列表(0条)

保存