为了账号安全,请及时绑定邮箱和手机立即绑定

n.setExpand(!n.isExpand()); 但是我们虽然改变了n 的状态,但是我们的n 并没有在赋值回去,这个时候我们的mAllNodes数据会发生变化么??

public abstract class TreeListViewAdapter<T> extends BaseAdapter
{
 protected Context mContext;
 protected List<Node> mAllNodes;
 protected List<Node> mVisibleNodes;
 protected LayoutInflater mInflater;

 protected ListView mTree;

  mTree.setOnItemClickListener(new OnItemClickListener()
  {
   @Override
   public void onItemClick(AdapterView<?> parent, View view,
     int position, long id)
   {
    expandOrCollapse(position);

    if (mListener != null)
    {
     mListener.onClick(mVisibleNodes.get(position), position);
    }

   }

  });

 }

 /**
  * 点击搜索或者展开
  *
  * @param position
  */
 private void expandOrCollapse(int position)
 {

  Node n = mVisibleNodes.get(position);
  if (n != null)
  {
   if (n.isLeaf())
    return;
   n.setExpand(!n.isExpand());
   //  但是我们虽然改变了n 的状态,但是我们的n 并没有在赋值回去,这个时候我们的mAllNodes数据会发生变化么??

   
   mVisibleNodes = TreeHelper.filterVisibleNodes(mAllNodes);
   notifyDataSetChanged();
  }
 }


正在回答

1 回答

从List中拿到的数据都是引用,node在内存中从来都 只有一个。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android自定义任意层级树形控件
  • 参与学习       25842    人
  • 解答问题       34    个

使用ListView制作Android树状图,加深ListView适配器理解

进入课程

n.setExpand(!n.isExpand()); 但是我们虽然改变了n 的状态,但是我们的n 并没有在赋值回去,这个时候我们的mAllNodes数据会发生变化么??

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信