使用LinearLayout,ScrollView自定义ListView,

如果一个界面里面有多个ListView,还需要全屏能滚动,这样ListView无法和ScrollView 同时使用,有冲突,解决起来好像比较麻烦。

使用LinearLayout 和 ScrollView自定义ListView。

 

 

public class DataModel {
	
	public DataModel(String name,String grade,String price,String time){
		this.name = name;
		this.grade = grade;
		this.price = price;
		this.time = time;
	}
	
	public String name;
	public String grade;
	public String price;
	public String time;
}


 

 

 

 

 

public class ListViewLoader {

	public final static int SPACE = 10;
	public final static int screenWidth = 480;
	public final static String TH[] = { "名称", "级别", "Tag", "更新时间" };
	private LinearLayout myListView;
	private Activity activity;

	public ListViewLoader(View listrootView, View headerView, Activity activity) {
		this.activity = activity;
		myListView = (LinearLayout) listrootView;
		createTHViewForList(activity, (LinearLayout) headerView);
	}

	public void loadData(ArrayList<DataModel> dataList) {
		createPriceList(dataList);
	}

	public void createTHViewForList(Activity context, LinearLayout headerView) {
		int width = (screenWidth - SPACE) / TH.length;
		headerView.setOrientation(LinearLayout.HORIZONTAL);
		LinearLayout.LayoutParams Params = new LinearLayout.LayoutParams(width,
				40);
		for (String str : TH) {
			headerView.addView(createTHTextView(str, context), Params);
		}
	}

	public static TextView createTHTextView(String title, Activity context) {
		TextView view = new TextView(context);
		view.setText(title);
		view.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13);
		view.setGravity(Gravity.CENTER_HORIZONTAL);
		view.setTextColor(Color.BLACK);
		TextPaint paint = view.getPaint();
		paint.setFakeBoldText(true);
		return view;
	}

	public LinearLayout createPriceListItem(DataModel data) {
		int width = (screenWidth - SPACE) / TH.length; // 根据手机屏幕计算
														// 每个列的宽度,多屏幕适用,SPACE为空隙,UI会好看些。
		LinearLayout itemView = new LinearLayout(activity);
		itemView.setOrientation(LinearLayout.HORIZONTAL);
		LinearLayout.LayoutParams Params = new LinearLayout.LayoutParams(width,
				38);

		TextView t = createDataTextView(data.name, activity);
		itemView.addView(t, Params);

		t = createDataTextView(data.grade, activity);
		itemView.addView(t, Params);

		t = createDataTextView(data.price, activity);
		itemView.addView(t, Params);

		t = createDataTextView(data.time, activity);
		itemView.addView(t, Params);

		return itemView;
	}

	LinearLayout.LayoutParams Params = new LinearLayout.LayoutParams(
			LinearLayout.LayoutParams.FILL_PARENT, 40);

	public void createPriceList(final ArrayList<DataModel> dataModelList) {
		Params.leftMargin = 3;
		Params.rightMargin = 3;
		Params.gravity = Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL;
		for (DataModel mdata : dataModelList) {
			DataModel data = (DataModel) mdata;
			final ViewGroup itemView = createPriceListItem(data);
			itemView.setOnClickListener(new OnClickListener() {
				public void onClick(View arg0) {
					// 点击事件
				}
			});
			myListView.addView(itemView, Params);
		}
	}

	public static TextView createDataTextView(String title, Activity context) {
		TextView view = new TextView(context);
		view.setText(title);
		view.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13);
		view.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
		view.setTextColor(Color.BLACK);
		return view;
	}

}


 

 

 

 

 

 

Activity主要代码

 

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		ListViewLoader loader = new ListViewLoader(
				findViewById(R.id.listviewLy2Id),
				findViewById(R.id.listviewHeaderId), this);
		
		ArrayList<DataModel> modelList = new ArrayList<DataModel>();
		modelList.add(new DataModel("苹果1", "1", "2.3", "2013-02-19"));
		modelList.add(new DataModel("苹果2", "2", "2.5", "2013-02-19"));
		modelList.add(new DataModel("苹果3", "3", "2.4", "2013-02-19"));
		modelList.add(new DataModel("苹果4", "4", "2.2", "2013-02-19"));
		modelList.add(new DataModel("苹果1", "1", "2.3", "2013-02-19"));
		modelList.add(new DataModel("苹果2", "2", "2.5", "2013-02-19"));

		
		loader.loadData(modelList);
	}


 

 

 

 

 

 

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:orientation="vertical"
    >

    <LinearLayout
        android:id="@+id/listviewHeaderId"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
    </LinearLayout>

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="200dip" >

        <LinearLayout
            android:id="@+id/listviewLy2Id"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >
        </LinearLayout>
    </ScrollView>

</LinearLayout>


 

 

 

 

 

 

 

结果:

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值