android-使用自定义适配器刷新可见的ListView

android-使用自定义适配器刷新可见的ListView,第1张

概述所以基本上的想法是我有2个ListViews最初:2个列表视图均可见,第一个正确填充,第二个为空但已显示单击第一个ListView的行后:从数据库中获取数据,并将其正确放置在第二个中问题与解答问题:数据已正确获取,但第二个ListView保持为空,并且根本不调用getView().1-有没有一种方法可以

所以基本上的想法是我有2个ListVIEws

最初:2个列表视图均可见,第一个正确填充,第二个为空但已显示

单击第一个ListVIEw的行后:从数据库中获取数据,并将其正确放置在第二个中

问题与解答问题:

数据已正确获取,但第二个ListVIEw保持为空,并且根本不调用getVIEw().

1-有没有一种方法可以在不刷新页面的情况下加载第二个ListVIEw?

2-因为该行不可见,所以不调用getVIEw()吗?我该如何绕过这个问题?

使用notifyDataSetChanged()进行尝试,然后验证第二个ListVIEw

非常感谢您的协助

CustomAdapter.java

public class CustomAdapter extends  ArrayAdapter<ListItem>{  LayoutInflater inflater;List<ListItem> items;public CustomAdapter(Context context, int textVIEwResourceID, List<ListItem> items2) {    super(context, textVIEwResourceID);    this.items = items2;    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);}@OverrIDe  public int getCount() {      return items.size();  }  @OverrIDepublic ListItem getItem(int position) {        return ((CustomAdapter) items).getItem(position);}@OverrIDe  public long getItemID(int position) {      return position;  }@OverrIDe  public VIEw getVIEw(final int position, VIEw convertVIEw, VIEwGroup parent) {      final ListItem holder;    final ListItem item = items.get(position);    VIEw vi=convertVIEw;    if(vi==null){        vi = inflater.inflate(R.layout.popup_toPing, null);        holder = new ListItem();        holder.text = (TextVIEw) vi.findVIEwByID(R.ID.text);        holder.Check = (CheckBox) vi.findVIEwByID(R.ID.check);        vi.setTag(holder);    }else{        holder = (ListItem) vi.getTag();    }    holder.text.setText(item.t);    holder.Check.setChecked(item.IsChecked);    return vi;  }}

主要活动的实施

List<ListItem> items = new ArrayList<ListItem>();;items.add(new ListItem(){{                            t= c.getString("first_text");                            IsChecked = false;                        }});CustomAdapter listadapter = new CustomAdapter(context, R.layout.popup, items);                      myList.setAdapter(listadapter);listadapter.notifyDataSetChanged();myList.invalIDate();

解决方法:

我建议您出于某些原因考虑实施Fragments …

Fragments have their own lifecycleFragments can communicate in the same activity very easilyBest practice for supporting good UI for tablets

因此,如果您具有ListFragment A和Fragment B,则可以在“ ListFragment B”上创建一个侦听器,以便在ListFragment A上选择一个项目时,然后使用您的规范填充FragmentB.我认为这对您有很大帮助.请看本文第10节中的示例:
http://www.vogella.com/articles/AndroidFragments/article.html

总结

以上是内存溢出为你收集整理的android-使用自定义适配器刷新可见的ListView全部内容,希望文章能够帮你解决android-使用自定义适配器刷新可见的ListView所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存