我不知道如何通过单击基于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获取下一个和上一个详细数据所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)