西安软件优化网站建设,wordpress 深色主题,深圳网站系统哪家强,佛山选择免费网站优化android 嵌套的listview示例(可参考实现朋友圈评论) 最近在项目中用到listview中再嵌套一个listview#xff0c;两层也有监听#xff0c;都没有问题。其实#xff0c;主要解决里面那一层的listview的高度计算就可以#xff0c;外面那一层listview自动计算。加上里面那层展开…android 嵌套的listview示例(可参考实现朋友圈评论) 最近在项目中用到listview中再嵌套一个listview两层也有监听都没有问题。其实主要解决里面那一层的listview的高度计算就可以外面那一层listview自动计算。加上里面那层展开的就是高度。这种解android 嵌套的listview示例(可参考实现朋友圈评论)最近在项目中用到listview中再嵌套一个listview两层也有监听都没有问题。其实主要解决里面那一层的listview的高度计算就可以外面那一层listview自动计算。加上里面那层展开的就是高度。这种解决方案经常应用于朋友圈的评论。每一条说说然后下面有评论。项目下载地址http://download.csdn.net/detail/qq_16064871/93349931、项目结构图2、实现效果图这上面效果图的监听两层都有以及外面的button都可以。够多样化吧。3、ChildListViewpackage com.nest.view;import android.content.Context;import android.util.AttributeSet;import android.widget.ListView;public class ChildListView extends ListView {public ChildListView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);// TODO Auto-generated constructor stub}public ChildListView(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stub}public ChildListView(Context context) {super(context);// TODO Auto-generated constructor stub}Overridepublic void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {int expandSpec MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE 2, MeasureSpec.AT_MOST);super.onMeasure(widthMeasureSpec, expandSpec);}}里面listview的高度的计算。4、外面那层listview的适配器ParentAdaptpackage com.nest.adapt;import java.util.ArrayList;import java.util.List;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.view.View.OnClickListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.Button;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import com.nest.activity.R;import com.nest.base.BaseObjectListAdapter;import com.nest.entity.Entity;import com.nest.entity.ShowEntity;/*** 父listview适配器* author mmsx**/public class ParentAdapt extends BaseObjectListAdapter{private ArrayList mChildList;public static int mParentItem -1;public static boolean mbShowChild false;public ParentAdapt(Context context, List extends Entity datas) {super(context, datas);initData();}private void initData() {mChildList new ArrayList();mChildList.clear();for (int i 0; i 5; i) {ShowEntity tempEntity new ShowEntity(字标题 String.valueOf(i), 内容);mChildList.add(tempEntity);}}Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder vHolder null;if (convertView null) {vHolder new ViewHolder();convertView mInflater.inflate(R.layout.activity_main_list_item, null);vHolder.textViewTitle (TextView)convertView.findViewById(R.id.textView_1);vHolder.textViewContent (TextView)convertView.findViewById(R.id.textView_2);vHolder.listViewItem (ListView)convertView.findViewById(R.id.listView_child);vHolder.buttonStake (Button)convertView.findViewById(R.id.button_1);convertView.setTag(vHolder);}else {vHolder (ViewHolder) convertView.getTag();}ShowEntity tempEntity (ShowEntity) mDatas.get(position);vHolder.textViewTitle.setText(tempEntity.getTitle());vHolder.textViewContent.setText(tempEntity.getContent());//点击那个弹出那个如果已经弹出就收回子listviewif (mParentItem position mbShowChild) {//子listview实在这里加载数据的ChildAdapt tempAdapt new ChildAdapt(mContext, mChildList);vHolder.listViewItem.setAdapter(tempAdapt);vHolder.listViewItem.setVisibility(View.VISIBLE);//子listview的点击监听vHolder.listViewItem.setOnItemClickListener(new OnItemClickListener() {Overridepublic void onItemClick(AdapterView parent, View view,int position, long id) {Toast.makeText(mContext, Child Listview String.valueOf(position), Toast.LENGTH_SHORT).show();}});}else {vHolder.listViewItem.setVisibility(View.GONE);}vHolder.buttonStake.setOnClickListener(new ParentButtonLisener());//记住是那个button事件vHolder.buttonStake.setTag(position);return convertView;}class ViewHolder{TextView textViewTitle;TextView textViewContent;ListView listViewItem;Button buttonStake;}//父listview的button的监听private class ParentButtonLisener implements OnClickListener{Overridepublic void onClick(View v) {Integer nPosition (Integer) (v.getTag());Toast.makeText(mContext, 提示 String.valueOf(nPosition.intValue()), Toast.LENGTH_SHORT).show();}}}5、里面那层listview的适配器ChildAdaptpackage com.nest.adapt;import java.util.List;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import com.nest.activity.R;import com.nest.base.BaseObjectListAdapter;import com.nest.entity.Entity;import com.nest.entity.ShowEntity;/*** 子listview适配器* author mmsx**/public class ChildAdapt extends BaseObjectListAdapter{public ChildAdapt(Context context, List extends Entity datas) {super(context, datas);}Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder vHolder null;if (convertView null) {vHolder new ViewHolder();convertView mInflater.inflate(R.layout.activity_main_list_item_1, null);vHolder.textViewTitle (TextView)convertView.findViewById(R.id.textView_1);vHolder.textViewContent (TextView)convertView.findViewById(R.id.textView_2);convertView.setTag(vHolder);}else {vHolder (ViewHolder) convertView.getTag();}ShowEntity tempEntity (ShowEntity) mDatas.get(position);vHolder.textViewTitle.setText(tempEntity.getTitle());vHolder.textViewContent.setText(tempEntity.getContent());return convertView;}class ViewHolder{TextView textViewTitle;TextView textViewContent;}}6、实现调用MainActivitypackage com.nest.activity;import java.util.ArrayList;import com.nest.adapt.ParentAdapt;import com.nest.entity.ShowEntity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;import android.app.Activity;/*** listview嵌套listview实现效果* author mmsx**/public class MainActivity extends Activity {private ParentAdapt mParentAdapt;private ArrayList mParentList;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initData();initView();}private void initData() {mParentList new ArrayList();mParentList.clear();for (int i 0; i 20; i) {ShowEntity tempEntity new ShowEntity(标题 String.valueOf(i), 内容);mParentList.add(tempEntity);}}private void initView() {ListView listView (ListView)findViewById(R.id.listView1);mParentAdapt new ParentAdapt(this, mParentList);listView.setAdapter(mParentAdapt);listView.setOnItemClickListener(new AdaptItemClick());//长按listview就不写示范了//listView.setOnItemLongClickListener(listener);}//父listview的单击事件的监听private class AdaptItemClick implements OnItemClickListener{Overridepublic void onItemClick(AdapterView parent, View view, int position,long id) {if (ParentAdapt.mParentItem position ParentAdapt.mbShowChild) {ParentAdapt.mbShowChild false;}else {ParentAdapt.mbShowChild true;}ParentAdapt.mParentItem position;mParentAdapt.notifyDataSetChanged();}}}布局就不贴有好几个。有需要下载项目源码。项目下载地址http://download.csdn.net/detail/qq_16064871/93349931楼douyingnan5小时前有个东西叫做expandablelistview