日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android评论嵌套,android 嵌套的listview示例(可参照实现朋友圈评论)

發(fā)布時(shí)間:2024/8/23 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android评论嵌套,android 嵌套的listview示例(可参照实现朋友圈评论) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

android 嵌套的listview示例(可參考實(shí)現(xiàn)朋友圈評(píng)論) 最近在項(xiàng)目中用到listview中再嵌套一個(gè)listview,兩層也有監(jiān)聽,都沒有問題。其實(shí),主要解決里面那一層的listview的高度計(jì)算就可以,外面那一層listview自動(dòng)計(jì)算。加上里面那層展開的,就是高度。這種解

android 嵌套的listview示例(可參考實(shí)現(xiàn)朋友圈評(píng)論)

最近在項(xiàng)目中用到listview中再嵌套一個(gè)listview,兩層也有監(jiān)聽,都沒有問題。其實(shí),主要解決里面那一層的listview的高度計(jì)算就可以,外面那一層listview自動(dòng)計(jì)算。加上里面那層展開的,就是高度。這種解決方案經(jīng)常應(yīng)用于朋友圈的評(píng)論。每一條說說,然后下面有評(píng)論。

項(xiàng)目下載地址:http://download.csdn.net/detail/qq_16064871/9334993

1、項(xiàng)目結(jié)構(gòu)圖

2、實(shí)現(xiàn)效果圖

這上面效果圖的監(jiān)聽兩層都有,以及外面的button都可以。夠多樣化吧。

3、ChildListView

package 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

}

@Override

public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);

super.onMeasure(widthMeasureSpec, expandSpec);

}

}

里面listview的高度的計(jì)算。

4、外面那層listview的適配器ParentAdapt

package 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("字標(biāo)題" + String.valueOf(i), "內(nèi)容");

mChildList.add(tempEntity);

}

}

@Override

public 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());

//點(diǎn)擊那個(gè)彈出那個(gè),如果已經(jīng)彈出就收回子listview

if (mParentItem == position && mbShowChild) {

//子listview實(shí)在這里加載數(shù)據(jù)的

ChildAdapt tempAdapt = new ChildAdapt(mContext, mChildList);

vHolder.listViewItem.setAdapter(tempAdapt);

vHolder.listViewItem.setVisibility(View.VISIBLE);

//子listview的點(diǎn)擊監(jiān)聽

vHolder.listViewItem.setOnItemClickListener(new OnItemClickListener() {

@Override

public 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());

//記住是那個(gè)button事件

vHolder.buttonStake.setTag(position);

return convertView;

}

class ViewHolder{

TextView textViewTitle;

TextView textViewContent;

ListView listViewItem;

Button buttonStake;

}

//父listview的button的監(jiān)聽

private class ParentButtonLisener implements OnClickListener{

@Override

public void onClick(View v) {

Integer nPosition = (Integer) (v.getTag());

Toast.makeText(mContext, "提示" + String.valueOf(nPosition.intValue()), Toast.LENGTH_SHORT).show();

}

}

}

5、里面那層listview的適配器ChildAdapt

package 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);

}

@Override

public 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、實(shí)現(xiàn)調(diào)用MainActivity

package 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實(shí)現(xiàn)效果

* @author mmsx

*

*/

public class MainActivity extends Activity {

private ParentAdapt mParentAdapt;

private ArrayList mParentList;

@Override

protected 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("標(biāo)題" + String.valueOf(i), "內(nè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());

//長(zhǎng)按listview就不寫示范了

//listView.setOnItemLongClickListener(listener);

}

//父listview的單擊事件的監(jiān)聽

private class AdaptItemClick implements OnItemClickListener{

@Override

public 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();

}

}

}

布局就不貼,有好幾個(gè)。有需要下載項(xiàng)目源碼。

項(xiàng)目下載地址:http://download.csdn.net/detail/qq_16064871/93349931樓douyingnan5小時(shí)前有個(gè)東西叫做expandablelistview

總結(jié)

以上是生活随笔為你收集整理的android评论嵌套,android 嵌套的listview示例(可参照实现朋友圈评论)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。