使用ListView和HorizontalScrollView打造可以左右和上下滑动的列表布局,有些情况下很实用哦。
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 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"> <HorizontalScrollView 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"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:id="@+id/titleLayout" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="40dp"/> <ListView android:id="@+id/mListView" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> </HorizontalScrollView> </RelativeLayout>
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<ItemBean> dataList = new ArrayList<>(); private ItemBean bean; private List<String> 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 < COLUMN_NUM; 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 < idList.size(); 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<ItemBean> mDataLists ; private int mColumnNum = 0 ; private int mRowNum = 0 ; public MyListAdapter() { } /** * 构造函数 * @param mContext * @param mDataLists */ public MyListAdapter(Context mContext, List<ItemBean> mDataLists , int columnNum ) { this.mContext = mContext; this.mDataLists = mDataLists; this.mColumnNum = columnNum ; } /** * 构造函数+1 * @param mContext * @param mDataLists * @param columnNum */ public MyListAdapter(Context mContext, List<ItemBean> 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 < mColumnNum ; 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 < this.getCount(); i++) { if(this.getItem(i).getId().equals(index)) return this.getItem(i) ; } return null ; } }
點擊查看更多內(nèi)容
為 TA 點贊
評論
評論
共同學(xué)習(xí),寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦