ListView 嵌套listView 怎么实现,及关于焦点问题的解决。

来源:互联网 发布:浏览器ip代理软件 编辑:程序博客网 时间:2024/06/08 19:16

ListView 中嵌套ListView的实现:

1.主布局为ListVIew ,在ListView的条目布局中加入你的布局并加入ListView

2.在适配数据时在需要两个适配器,条目ListView 适配数据要在主ListView 的getViw 方法下适配(注意在第一个适配器构造方法中要有里边适配器数据)

@Overridepublic View getView(final int position, View convertView, ViewGroup parent) {    ViewHolder holder;    if (convertView == null) {        convertView = LayoutInflater.from(context).inflate(R.layout.boxnewadapter, null);        holder = new ViewHolder(convertView);        convertView.setTag(holder);    } else {        holder = (ViewHolder) convertView.getTag();    }    holder.state.setText(data.get(position).deal_status);    holder.boxnum.setText(data.get(position).order_id);    holder.summoney.setText(data.get(position).deal_total_money);    holder.time.setText(data.get(position).deal_time);    holder.list.setAdapter(new NewboxAdapte(data.get(position).list,data.get(position), context));    holder.list.setFocusable(false);    convertView.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {            ArrayList<NewBoxBean> arr = data.get(position).list;            Intent in=new Intent(context, BoxDetails.class);            in.putExtra("boxid",data.get(position));            context.startActivity(in);        }    });    return convertView;}class ViewHolder {    MyListView list;    TextView time,  state, summoney, boxnum;    ViewHolder(View view) {        list= (MyListView) view.findViewById(R.id.listView);        boxnum = (TextView) view.findViewById(R.id.boxnumbers);        time = (TextView) view.findViewById(R.id.time);        state = (TextView) view.findViewById(R.id.state);        summoney = (TextView) view.findViewById(R.id.sumony);    }}
ListView 焦点问题:

很简单只需把嵌套的ListView高度设置成随内容改变而改变

public class MyListView extends ListView {    public MyListView(Context context, AttributeSet attrs) {        super(context, attrs);    }    public MyListView(Context context) {        super(context);    }    public MyListView(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);    }    @Override    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);        super.onMeasure(widthMeasureSpec, expandSpec);    }


0 0
原创粉丝点击