使用ListView和HorizontalScrollView打造可以左右和上下滑动的列表布局,有些情况下很实用哦。<?xml version="1.0" encoding="utf-8"?>
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.cjt.horizontalscrollviewdemo.MainActivity">
android:id="@+id/mHorizontalScrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true">
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:id="@+id/titleLayout"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="40dp"/>
android:id="@+id/mListView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
import android.os.Bundle;import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
// 界面上的控件
private ListView mListView;
private MyListAdapter mAdapter;
private LinearLayout mTitleLayout;
// 相关的数据
private List dataList = new ArrayList<>();
private ItemBean bean;
private List idList = new ArrayList<>();
private static final int COLUMN_NUM = 15;
private static final int ROW_NUM = 15;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = (ListView) findViewById(R.id.mListView);
mTitleLayout = (LinearLayout) findViewById(R.id.titleLayout);
for (int i = 0; i
View titleView = LayoutInflater.from(this).inflate(R.layout.item_text, null);
TextView title = (TextView) titleView.findViewById(R.id.itemTitleTv);
title.setText("标题" + i);
mTitleLayout.addView(titleView, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f));
}
// 准备数据
for (int i = 1; i <= COLUMN_NUM; i++) {
for (int j = 1; j <= ROW_NUM; j++) {
idList.add(i + "-" + j);
}
}
for (int i = 0; i
bean = new ItemBean();
bean.setId(idList.get(i));
bean.setPictureName("同学" + i);
bean.setPictureResId(R.mipmap.ic_launcher);
dataList.add(bean); // 添加到数据集合
}
// 设置适配器
mAdapter = new MyListAdapter(this, dataList, COLUMN_NUM);
mListView.setAdapter(mAdapter);
}
}import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.List;
/**
* Created by CaoJiangtao on 2017/2/8.
* 列表适配器
*/
public class MyListAdapter extends BaseAdapter {
private Context mContext ;
private List mDataLists ;
private int mColumnNum = 0 ;
private int mRowNum = 0 ;
public MyListAdapter() {
}
/**
* 构造函数
* @param mContext
* @param mDataLists
*/
public MyListAdapter(Context mContext, List mDataLists , int columnNum ) {
this.mContext = mContext;
this.mDataLists = mDataLists;
this.mColumnNum = columnNum ;
}
/**
* 构造函数+1
* @param mContext
* @param mDataLists
* @param columnNum
*/
public MyListAdapter(Context mContext, List mDataLists , int columnNum , int rowNum) {
this.mContext = mContext;
this.mDataLists = mDataLists;
this.mColumnNum = columnNum ;
this.mRowNum = rowNum ;
}
@Override
public int getCount() {
return mDataLists.size();
}
@Override
public ItemBean getItem(int i) {
return mDataLists.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
view = LayoutInflater.from(mContext).inflate(R.layout.list_row_layout,null);
LinearLayout row = (LinearLayout) view.findViewById(R.id.listViewRow); // 行布局
if(row != null) row.removeAllViews(); // 清空行
for (int i = 0; i
View itemView = LayoutInflater.from(mContext).inflate(R.layout.item,null);
TextView itemNameTv = (TextView) itemView.findViewById(R.id.itemNameTv);
TextView itemLocationTv = (TextView) itemView.findViewById(R.id.itemLocationTv);
ItemBean itemBean = getLocationBean(position+1 , i+1); // 获取对应的实体类
if(itemBean != null){
itemNameTv.setText(itemBean.getPictureName());
itemLocationTv.setText(itemBean.getId());
// 将每个元素添加到行布局中去
row.addView(itemView, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f));
}
}
return view; // 返回加载好了内容的行布局
}
/***
* 根据座位号获取对应的元素
* @param row
* @param column
* @return
*/
private ItemBean getLocationBean(int row , int column){
String index = column+"-"+row; // 生成索引,对比索引找到对应的学生
for (int i = 0; i
if(this.getItem(i).getId().equals(index))
return this.getItem(i) ;
}
return null ;
}
}