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

所以基本上的想法是我有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();  
}  


@Override
public 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 …

  1. Fragments have their own lifecycle
  2. Fragments can communicate in the same activity very easily
  3. Best 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-滚动时带有ViewHolder和节的Listview失败


下一篇:Python,Zope组件体系结构,注册适配器