亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

ListView嵌套GridView使用詳解及注意事項

2020-04-11 12:05:36
字體:
來源:轉載
供稿:網友
MainActivity如下:
復制代碼 代碼如下:

package cn.testlistviewandgridview;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
/**
* Demo描述:
* ListView嵌套GridView使用詳解
* 即ListView的每個Item中都包含一個GridView
*
* 注意事項:
* 由于ListView和GridView都是可滑動的控件.
* 所以需要自定義GridView,重寫其onMeasure()方法.
* 在該方法中使GridView的高為wrap_content的大小,否則GridView中
* 的內容只能顯示很小一部分
*
* 參考資料:
* 1 http://bbs.csdn.net/topics/380245627
* 2 http://blog.csdn.net/lsong89/article/details/8598856
* Thank you very much
*/
public class MainActivity extends Activity {
private ListView mListView;
private ListViewAdapter mListViewAdapter;
private ArrayList<ArrayList<HashMap<String,Object>>> mArrayList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
}
private void init(){
mListView=(ListView) findViewById(R.id.listView);
initData();
mListViewAdapter=new ListViewAdapter(mArrayList, MainActivity.this);
mListView.setAdapter(mListViewAdapter);
}
private void initData(){
mArrayList=new ArrayList<ArrayList<HashMap<String,Object>>>();
HashMap<String, Object> hashMap=null;
ArrayList<HashMap<String,Object>> arrayListForEveryGridView;

for (int i = 0; i < 10; i++) {
arrayListForEveryGridView=new ArrayList<HashMap<String,Object>>();
for (int j = 0; j < 5; j++) {
hashMap=new HashMap<String, Object>();
hashMap.put("content", "i="+i+" ,j="+j);
arrayListForEveryGridView.add(hashMap);
}
mArrayList.add(arrayListForEveryGridView);
}

}
}

ListViewAdapter如下:
復制代碼 代碼如下:

package cn.testlistviewandgridview;
import java.util.ArrayList;
import java.util.HashMap;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
public class ListViewAdapter extends BaseAdapter {
private ArrayList<ArrayList<HashMap<String, Object>>> mList;
private Context mContext;

public ListViewAdapter(ArrayList<ArrayList<HashMap<String, Object>>> mList, Context mContext) {
super();
this.mList = mList;
this.mContext = mContext;
}
@Override
public int getCount() {
if (mList == null) {
return 0;
} else {
return this.mList.size();
}
}
@Override
public Object getItem(int position) {
if (mList == null) {
return null;
} else {
return this.mList.get(position);
}
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = LayoutInflater.from
(this.mContext).inflate(R.layout.listview_item, null, false);
holder.imageView = (ImageView) convertView.findViewById(R.id.listview_item_imageview);
holder.gridView = (GridView) convertView.findViewById(R.id.listview_item_gridview);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}


if (this.mList != null) {
if (holder.imageView != null) {
holder.imageView.setImageDrawable
(mContext.getResources().getDrawable(R.drawable.e));
}
if (holder.gridView != null) {
ArrayList<HashMap<String, Object>> arrayListForEveryGridView = this.mList.get(position);
GridViewAdapter gridViewAdapter=new GridViewAdapter(mContext, arrayListForEveryGridView);
holder.gridView.setAdapter(gridViewAdapter);
}
}
return convertView;
}

private class ViewHolder {
ImageView imageView;
GridView gridView;
}
}

GridViewAdapter如下:
復制代碼 代碼如下:

package cn.testlistviewandgridview;
import java.util.ArrayList;
import java.util.HashMap;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.Toast;
public class GridViewAdapter extends BaseAdapter{
private Context mContext;
private ArrayList<HashMap<String, Object>> mList;

public GridViewAdapter(Context mContext,ArrayList<HashMap<String, Object>> mList) {
super();
this.mContext = mContext;
this.mList = mList;
}
@Override
public int getCount() {
if (mList == null) {
return 0;
} else {
return this.mList.size();
}
}
@Override
public Object getItem(int position) {
if (mList == null) {
return null;
} else {
return this.mList.get(position);
}
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = LayoutInflater.from
(this.mContext).inflate(R.layout.gridview_item, null, false);
holder.button = (Button)convertView.findViewById(R.id.gridview_item_button);
convertView.setTag(holder);

} else {
holder = (ViewHolder) convertView.getTag();
}


if (this.mList != null) {
HashMap<String, Object> hashMap = this.mList.get(position);
if (holder.button != null) {
holder.button.setText(hashMap.get("content").toString());
holder.button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mContext, "第"+(position+1)+"個", Toast.LENGTH_SHORT).show();
}
});
}
}
return convertView;
}

private class ViewHolder {
Button button;
}
}

NoScrollGridView如下:
復制代碼 代碼如下:

package cn.testlistviewandgridview;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.GridView;
public class NoScrollGridView extends GridView {
public NoScrollGridView(Context context) {
super(context);

}
public NoScrollGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}

main.xml如下:
復制代碼 代碼如下:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ListView
android:id="@+id/listView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:focusable="false"
/>
</RelativeLayout>

listview_item.xml如下:
復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<ImageView
android:id="@+id/listview_item_imageview"
android:layout_width="fill_parent"
android:layout_height="20dip"
android:scaleType="fitXY"
android:src="@drawable/e"
/>
<cn.testlistviewandgridview.NoScrollGridView
android:id="@+id/listview_item_gridview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchMode="columnWidth"
android:verticalSpacing="5dip"
android:horizontalSpacing="5dip"
android:numColumns="2"/>
</LinearLayout>

gridview_item.xml如下:
復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:padding="10dip"
>
<Button
android:id="@+id/gridview_item_button"
android:layout_width="140dip"
android:layout_height="40dip"
android:background="@drawable/e"
android:textColor="@android:color/background_light"
android:clickable="true"
/>
</LinearLayout>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产小视频| 成人免费福利在线| 日韩欧美在线国产| 综合欧美国产视频二区| 一区二区在线视频| 亚洲精品久久久久久久久久久久| 国产精品欧美一区二区三区奶水| 日韩在线观看免费全集电视剧网站| 色妞久久福利网| 精品久久久久久电影| 亚洲欧美日韩中文在线| 欧美人与性动交a欧美精品| 懂色av影视一区二区三区| 日韩av在线影院| 91国偷自产一区二区三区的观看方式| 国产精品视频午夜| 中文字幕亚洲一区二区三区| 国产成人鲁鲁免费视频a| 欧美激情2020午夜免费观看| 夜夜躁日日躁狠狠久久88av| 国产日韩在线亚洲字幕中文| 日韩中文字幕第一页| 色妞色视频一区二区三区四区| 亚洲精品之草原avav久久| 欧美精品一区二区免费| 富二代精品短视频| 欧美激情精品久久久久久| 亚洲精品日韩久久久| 欧美日韩中文在线观看| 福利精品视频在线| 久久久精品国产网站| 亚洲美女久久久| 另类天堂视频在线观看| 亚洲sss综合天堂久久| 成人免费看吃奶视频网站| 色哟哟亚洲精品一区二区| 中文字幕av一区二区三区谷原希美| 国产玖玖精品视频| 亚洲精品一区二区三区不| 国产成人精品综合久久久| 欧美成人午夜视频| 久久综合久久美利坚合众国| 亚洲国产精品久久久久秋霞不卡| 久久成人综合视频| 亚洲性69xxxbbb| 国产美女被下药99| 亚洲国产精品热久久| 欧美一区二区三区四区在线| 国产精品三级久久久久久电影| 欧美日韩国产影院| 精品久久久国产精品999| 亚洲第一精品夜夜躁人人爽| 国产精品九九久久久久久久| 69国产精品成人在线播放| 国产91热爆ts人妖在线| 97成人精品区在线播放| 日韩最新中文字幕电影免费看| 在线午夜精品自拍| 国产91精品视频在线观看| 欧美大片在线免费观看| 国产亚洲精品综合一区91| 91精品视频免费| 一本一道久久a久久精品逆3p| 亚洲精品av在线播放| 搡老女人一区二区三区视频tv| 中文字幕久久久av一区| 国产a级全部精品| 日韩在线小视频| 亚洲爱爱爱爱爱| 亚洲欧美中文日韩在线| 欧美精品在线播放| 日韩欧美在线网址| 成人a视频在线观看| 亚洲美女性生活视频| 精品国产乱码久久久久酒店| 国产精品久久久久国产a级| 国产区精品在线观看| 亚洲精品一区二区三区不| 国内外成人免费激情在线视频网站| 欧美日韩高清区| 日韩极品精品视频免费观看| 亚洲第一福利网| 日韩黄色av网站| 亚洲人高潮女人毛茸茸| 欧美大片va欧美在线播放| 久久亚洲精品毛片| 国产欧美最新羞羞视频在线观看| 久久精品国产成人精品| 欧美日韩在线观看视频| 成人自拍性视频| 欧美精品videossex性护士| 国产精品视频成人| 精品国产户外野外| 欧美日韩中文字幕日韩欧美| 国产精品777| 在线激情影院一区| 亚洲一区二区三区久久| 国产精品爽爽ⅴa在线观看| 不卡在线观看电视剧完整版| 日韩欧美一区视频| 欧美激情图片区| 欧美成人精品在线观看| 国产99久久久欧美黑人| 精品久久久国产| 亚洲免费高清视频| 久久韩剧网电视剧| 中文字幕日韩精品有码视频| 国内免费久久久久久久久久久| 欧美成人sm免费视频| 欧美成人免费观看| 欧美性猛交99久久久久99按摩| 欧美一区二三区| 91免费福利视频| 欧美成人精品在线观看| 日韩人在线观看| 亚洲在线观看视频网站| 国产精品自产拍在线观| 亚洲欧美色婷婷| 亚洲第一区中文字幕| 亚洲欧美日韩一区二区在线| 欧美裸体xxxx极品少妇| 麻豆一区二区在线观看| 亚洲最大的免费| 日韩精品丝袜在线| 亚洲色图五月天| 全色精品综合影院| 国产在线视频91| 日本电影亚洲天堂| 一本色道久久88亚洲综合88| 2019中文字幕免费视频| 69av视频在线播放| 国产成人精品久久二区二区91| 精品久久在线播放| 国产精品久久久久久久电影| 日韩精品免费在线播放| 亚洲欧洲一区二区三区在线观看| 欧美激情精品久久久久久变态| 亚洲欧美日韩国产成人| 疯狂蹂躏欧美一区二区精品| 亚洲品质视频自拍网| 国产日韩中文字幕| 97超碰蝌蚪网人人做人人爽| 粉嫩老牛aⅴ一区二区三区| 91成人精品网站| 亚洲xxxxx电影| 国产一区二区三区网站| 欧美大全免费观看电视剧大泉洋| 欧美精品18videosex性欧美| 久久男人av资源网站| 日韩av网站大全| 日韩成人免费视频| 免费99精品国产自在在线| 亚洲黄色成人网| 最近2019年手机中文字幕| 亚洲欧美日韩图片| 欧美日韩一区二区精品| 色偷偷av一区二区三区乱| 国产日韩欧美视频在线| 久久精品中文字幕免费mv| 中文字幕国产精品| 国产91ⅴ在线精品免费观看| 91av在线网站| 亚洲精品www久久久久久广东| 欧美日韩国产丝袜另类|