android滑动表格
㈠ Android如何设置列表的最大高度或最多可见个数,超出则以滚动显示
最近在做开发的时候,遇到了这样的一个需求:有一个聊天的模板列表,要求使用弹框的样式展示,尽可能的做到高度自适应。于是我就开始了各种探索:
探索1>动态的的设置弹框的高度,发现无法准确的计算高度,不美观;
探索2>将列表设置成固定高度,发现如果数目少的话就留有空白,不美观;
探索3>动态的设置列表的高度,这个办法还是可以的,使用recycleView做列表,发现高度很难控制,最终放弃了。
探索4>动态的设置列表的高度,只是使用listView实现,最终发现是符合需求的。
好了,闲话不说了,该是上硬菜的时候了。
使用方式
大致思路就是将具体的计算逻辑封装自定义的列表内,这样使用起来的就相当方便,其实就是计算出第一条item的高度,然后乘以最大item的个数就是最终列表展示的高度。当然这也有一个弊端,因为这个思路的前提是假设列表的每个item的高度差距不大,否则列表看着就不那么美观了。
㈡ 如何用安卓开发出复杂表格(类似Excel统计表)
Android实现Excel表格
具体的用法: 写好xml的布局文件:分为头部标题和lsitView两个部分。 头部标题永远排在第一列,其中第一个会滑动所以在布局的时候就不要放在
* com.excel.tool.MyHScrollView里面(MyHScrollView重写的HorizontalScrollView)。
* 其它没有什么就是对其滑动处理的把握。
*
* item里面的数据以及布局,按照正确的布局方式和逻辑处理。
*
* 它的用法其实你当做简单的listView那样操作就可以了。
*
* 排序没有完善,其实都是同一个方法,有待合并。
*
*
java">{
Contextcontext;
privateListViewlistView;
privateLinearLayouttoplayout;
privateMyAdaptermyAdapter;
publicList<DataModel>BaseData;
;
/**
*
*isTouchItem值的改变在
*
*com.excel.tool.MyHScrollView中去判断--解决ListView很容易触发点击事件
*
*里面处理控制表格滑动很容易触发的点击事件问题
*/
=false;
/***
*
*排序的监听
*/
privateLinearLayoutsort_0;
privatebooleanischeck;
privateImageViewsort_triangle;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context=MainActivity.this;
viewInit();
dataInit();
}
/***
*
*view的初始化
*
*/
publicvoidviewInit(){
toplayout=(LinearLayout)findViewById(R.id.toplayout);
toplayout.setOnTouchListener(onTouchListener);
horizontalScrollView=(HorizontalScrollView)toplayout
.findViewById(R.id.horizontalScrollView_excel);
listView=(ListView)findViewById(R.id.listView);
listView.setOnItemClickListener(onItemClickListener);
listView.setOnTouchListener(onTouchListener);
sort_0=(LinearLayout)findViewById(R.id.sort_0);
sort_0.setOnClickListener(onClickListener);
sort_triangle=(ImageView)findViewById(R.id.waterlevel_triangle);
}
/***
*
*数据的初始化
*
*/
publicvoiddataInit(){
if(BaseData==null)
BaseData=newArrayList<DataModel>();
myAdapter=newMyAdapter(context,toplayout);
for(inti=0;i<Data.subject.length;i++){
DataModelmodel=newDataModel();
model.setSubject(Data.subject[i]);
model.setChinese(Data.Chinese[i]);
model.setMath(Data.Math[i]);
model.setEnglish(Data.English[i]);
model.setPhysics(Data.Physics[i]);
model.setChemistry(Data.Chemistry[i]);
model.setBiology(Data.Biology[i]);
model.setPE(Data.PE[i]);
BaseData.add(model);
}
myAdapter.setHostBaseData(BaseData);
listView.setAdapter(myAdapter);
}
=newOnClickListener(){
@Override
publicvoidonClick(Viewv){
switch(v.getId()){
caseR.id.sort_0:
if(ischeck==false){
//对数据进行排序--传入数据,2表示递减排序,1表示递减
BaseData=Sort.sortchukuData(BaseData,2);
myAdapter.setHostBaseData(BaseData);
ischeck=true;
sort_triangle
.setBackgroundResource(R.drawable.triangle_down);
}else{
BaseData=Sort.sortchukuData(BaseData,1);
myAdapter.setHostBaseData(BaseData);
ischeck=false;
sort_triangle.setBackgroundResource(R.drawable.triangle_up);
}
break;
}
}
};
=newOnItemClickListener(){
@Override
publicvoidonItemClick(AdapterView<?>arg0,Viewarg1,intposition,
longarg3){
if(isTouchItem==false)
return;
CustomerToast.showToast(context,"你点击的是:"+position+"这个下标");
}
};
=newOnTouchListener(){
@Override
publicbooleanonTouch(Viewv,MotionEventevent){
switch(v.getId()){
caseR.id.toplayout:
horizontalScrollView.onTouchEvent(event);
returnfalse;
caseR.id.listView:
horizontalScrollView.onTouchEvent(event);
returnfalse;
}
returnfalse;
}
};
}
效果图片:
㈢ Android开发之头部悬浮的上拉加载,下拉刷新的列表
带时间戳的列表,要求时间悬浮顶部,动态替换顶部时间如下图,如下图,
多布局实现,时间悬浮为一个布局,数据相关内容为一个布局,这里推荐一个 Adapter依赖库BRVAH
根据返回的ItemViewType来加载不同的布局,动态设置时间布局的显示
加载数据时根据时间比较,判断当前数据是头部数据还是普通数据,添加进集合中
注意数据的判断,正确进行头部数据的添加。
将时间转化为xx月xx日的格式
默认情况下,最多只显示四行文本如下
点击之后,展开所有文本
具体实现如下:
设置下拉刷新,下拉加载的布局
具体实现可参考Demo,或者依赖库文档
刷新之后回调
下拉加载,上拉刷新布局如图,具体可运行demo查看
在头部悬浮,结合上拉刷新下拉加载过程中,遇到过上拉加载,导致头部悬浮布局错位,先前采用
SmartRefreshLayout ,由于SmartRefreshLayout上拉加载会将布局向上顶,导致悬浮布局错误,调试无果后,采用 EasyRefreshLayout 。
头部悬浮的上拉加载,下拉刷新的列表主要实现采用 Adapter依赖库BRVAH 及其推荐相关库 EasyRefreshLayout 和 RecyclerView粘性标签库 。其他更多用法,可以自行访问相关库学习。
最后给出 DEMO .
㈣ android gridview怎么做表格
功能:做表格,根据每个单元格的不同含义,给单元格设置不同的背景色;
实现:通过GridView结合BaseAdapter实现;
案例源码:
第一步,新建一个Android应用:BaseAdapterDemoActivity;
第二部,重写main.xml,如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<GridView
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
第三步,在BaseAdapterDemoActivity.java文件中创建MyAdapter,基类是BaseAdapter,如下:
package hello.zcping.adapter;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.TextView;
public class BaseAdapterDemoActivity extends Activity {
private GridView mGridView;
private MyAdapter mMyAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setupViews();
}
public void setupViews() {
mMyAdapter = new MyAdapter();
mGridView = (GridView) findViewById(R.id.gridview);
mGridView.setAdapter(mMyAdapter);
mGridView.setNumColumns(5);
}
private class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
return 20;
}
@Override
public Object getItem(int arg0) {
return arg0;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView mTextView = new TextView(getApplicationContext());
String[] abc = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"11", "12", "13", "14", "15", "16", "17", "18", "19", "20" };
int[] icolor = { Color.GRAY, Color.GREEN, Color.RED, Color.WHITE,
Color.YELLOW, Color.GRAY, Color.GREEN, Color.RED,
Color.WHITE, Color.YELLOW, Color.GRAY, Color.GREEN,
Color.RED, Color.WHITE, Color.YELLOW, Color.GRAY,
Color.GREEN, Color.RED, Color.WHITE, Color.YELLOW };
mTextView.setText(abc[position]);
mTextView.setTextColor(Color.BLACK);
mTextView.setBackgroundColor(icolor[position]);
return mTextView;
}
}
}
效果如下:
㈤ 如何将Android数据库中表格的某一列在下拉列表中显示
在第一个列表添加onchange属性,当你选择发生变化时进行页面提交,
提交以后,你判断从第一个列表中取值.
String str = request.getParameter("area");
当取出的值不为""和null时,即取得了地区代码,01,02......
用这个值,构造SQL语句,检索数据库,
"select 地区 from 表 where 代码 like '"+str+"%' and 代码 != '"+str+"00'"
这样就取得了城市的地区,
是一个ResultSet对象,遍历这个象,将数据添充到第二个下拉列表中
如果你想要看效果的话,给个邮箱,可以做一个JSP的小例子发给你,我白天工作,只能晚上给你回复
邮件已经发出请查收
㈥ android中如何动态创建数据表
在布局中加入表格
<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/table1">
</TableLayout>
之后再 MainActivity 中写入动态添加的代码
public void click(View v) {
if(row.getText().length()>0&&column.getText().length()>0){
//把输入的行和列转为整形
int row_int=Integer.parseInt(row.getText().toString());
int col_int=Integer.parseInt(column.getText().toString());
//获取控件tableLayout
tableLayout = (TableLayout)findViewById(R.id.table1);
//清除表格所有行
tableLayout.removeAllViews();
//全部列自动填充空白处
tableLayout.setStretchAllColumns(true);
//生成X行,Y列的表格
for(int i=1;i<=row_int;i++)
{
TableRow tableRow=new TableRow(MainActivity.this);
for(int j=1;j<=col_int;j++)
{
//tv用于显示
TextView tv=new TextView(MainActivity.this);
//Button bt=new Button(MainActivity.this);
tv.setText("("+i+","+j+")");
tableRow.addView(tv);
}
//新建的TableRow添加到TableLayout
tableLayout.addView(tableRow, new TableLayout.LayoutParams(MP, WC,1));
}
}else{
Toast.makeText(MainActivity.this,"请输入数值",1).show();
}
}