android ScrollView嵌套ListView,并且实现动态添加ListView里的Item

package com.example.scroll;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import com.example.scroll.GridAdapter.ViewHolder;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;

public class MainActivity extends Activity {

ScrollView scroll;
String[] texts = new String[] { "无线", "通话设置", "声音", "显示", "位置", "应用", "账户",
"隐私权", "存储", "语言", "游戏", "娱乐", "电影", "音乐", "辅助功能", "日期" };
ImageView image;
TestListView list;
TestListView list2;
ImageView image2;
LinearLayout.LayoutParams lp;
private Button btnClick;
private List<HashMap<String, Object>> listValue = new ArrayList<HashMap<String, Object>>();
private int count = 0;
private GridAdapter adapter;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}

void init() {
list = (TestListView) findViewById(R.id.list);
list2 = (TestListView) findViewById(R.id.list2);
image = (ImageView) findViewById(R.id.image);
image2 = (ImageView) findViewById(R.id.image2);

btnClick = (Button) findViewById(R.id.btn_add);
btnClick.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

HashMap<String, Object> map = new HashMap<String, Object>();
map.put("cai_liao", "材料"+count);
map.put("shu_liang", "数量"+count );
count++;
listValue.add(map);
adapter.notifyDataSetChanged();
}
});
adapter = new GridAdapter(this, listValue);
list.setAdapter(adapter);
list2.setAdapter(new SencondAdapter(this, texts));
scroll = (ScrollView) findViewById(R.id.scroll);
scroll.requestChildFocus(image, null);

}

public class GridAdapter extends BaseAdapter {

Activity context;
List<HashMap<String, Object>> mListValue;

public GridAdapter(Activity context, List<HashMap<String, Object>> listValue) {
this.context = context;
this.mListValue = listValue;
}

@Override
public int getCount() {
return mListValue.size();
}

@Override
public Object getItem(int position) {
return 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) {

convertView = context.getLayoutInflater().inflate(
R.layout.item, null);
holder = new ViewHolder();
holder.btnDel = (Button) convertView
.findViewById(R.id.btn_del);
holder.tvCaiLiao = (TextView) convertView
.findViewById(R.id.tv_cai_liao);
holder.tvShuLiang = (TextView) convertView
.findViewById(R.id.tv_shu_liang);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
HashMap<String, Object> map = new HashMap<String, Object>();
map = mListValue.get(position);
String caiLiao = (String) map.get("cai_liao");
String shuLiang = (String) map.get("shu_liang");

holder.tvCaiLiao.setText(caiLiao + "步骤" + position);
holder.tvShuLiang.setText(shuLiang);

holder.btnDel.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
mListValue.remove(position);
adapter.notifyDataSetChanged();
}
});


return convertView;
}

class ViewHolder {
Button btnDel;
TextView tvCaiLiao, tvShuLiang;
}

}

}


package com.example.scroll;

import android.app.Activity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class SencondAdapter extends BaseAdapter {

Activity context;
String[] mTexts;

public SencondAdapter(Activity context, String[] texts) {
this.context = context;
this.mTexts = texts;
}

@Override
public int getCount() {
return mTexts.length;
}

@Override
public Object getItem(int position) {
return null;
}

@Override
public long getItemId(int position) {
return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {

convertView = context.getLayoutInflater().inflate(R.layout.sencond_item,
null);
holder = new ViewHolder();

holder.text = (TextView) convertView.findViewById(R.id.grid_text);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText(mTexts[position]);
return convertView;
}

class ViewHolder {
TextView text;
}

}



package com.example.scroll;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;

public class TestListView extends ListView {
public TestListView(Context context) {
super(context);
}

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

public TestListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}

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

super.onMeasure(widthMeasureSpec, expandSpec);
}
}



activity_main.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:background="#FFFFFF"
    android:orientation="vertical" >

    <ScrollView
        android:id="@+id/scroll"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:fadingEdgeLength="0dp"
        android:scrollbars="none" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical" >

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                >

                <ImageView
                    android:id="@+id/image"
                    android:layout_width="fill_parent"
                    android:layout_height="150dp"
                    android:padding="2dp"
                    android:scaleType="centerCrop"
                    android:visibility="gone"
                    android:src="@drawable/ic_launcher" />

                <com.example.scroll.TestListView
                    android:id="@+id/list"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:fadingEdgeLength="0dp"
                    android:scrollbars="none" />
                <Button
                    android:id="@+id/btn_add"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginTop="10dp"
                    android:text="添加"
                    />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                 >

                <ImageView
                    android:id="@+id/image2"
                    android:layout_width="fill_parent"
                    android:layout_height="150dp"
                    android:padding="2dp"
                    android:scaleType="centerCrop"
                    android:src="@drawable/ic_launcher" />

                <com.example.scroll.TestListView
                    android:id="@+id/list2"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:fadingEdgeLength="0dp"
                    android:scrollbars="none" />
            </LinearLayout>
        </LinearLayout>
    </ScrollView>

</LinearLayout>

item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <Button
        android:id="@+id/btn_del"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="删除"
         />

    <TextView
        android:id="@+id/tv_shu_liang"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true" />

    <TextView
        android:id="@+id/tv_cai_liao"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/tv_shu_liang"
        android:layout_toRightOf="@id/btn_del" />

</RelativeLayout>

sencond_item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/grid_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"  />

</RelativeLayout>

效果图:

猜你喜欢

转载自gzsxt.iteye.com/blog/1971999
今日推荐