如何用安卓开发出复杂表格(类似Excel统计表)?
2个回答
展开全部
Android实现Excel表格
具体的用法: 写好xml的布局文件:分为头部标题和lsitView两个部分。 头部标题永远排在第一列,其中第一个会滑动所以在布局的时候就不要放在
* com.excel.tool.MyHScrollView里面(MyHScrollView重写的HorizontalScrollView)。
* 其它没有什么就是对其滑动处理的把握。
*
* item里面的数据以及布局,按照正确的布局方式和逻辑处理。
*
* 它的用法其实你当做简单的listView那样操作就可以了。
*
* 排序没有完善,其实都是同一个方法,有待合并。
*
*
public class MainActivity extends Activity {
Context context;
private ListView listView;
private LinearLayout toplayout;
private MyAdapter myAdapter;
public List<DataModel> BaseData;
private HorizontalScrollView horizontalScrollView;
/**
*
* isTouchItem值的改变在
*
* com.excel.tool.MyHScrollView中去判断--解决ListView很容易触发点击事件
*
* 里面处理 控制表格滑动很容易触发的点击事件问题
*/
public static boolean isTouchItem = false;
/***
*
* 排序的监听
*/
private LinearLayout sort_0;
private boolean ischeck;
private ImageView sort_triangle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = MainActivity.this;
viewInit();
dataInit();
}
/***
*
* view的初始化
*
*/
public void viewInit() {
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);
}
/***
*
* 数据的初始化
*
*/
public void dataInit() {
if (BaseData == null)
BaseData = new ArrayList<DataModel>();
myAdapter = new MyAdapter(context, toplayout);
for (int i = 0; i < Data.subject.length; i++) {
DataModel model = new DataModel();
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);
}
private OnClickListener onClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.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;
}
}
};
private OnItemClickListener onItemClickListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {
if (isTouchItem == false)
return;
CustomerToast.showToast(context, "你点击的是:" + position + "这个下标");
}
};
private OnTouchListener onTouchListener = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (v.getId()) {
case R.id.toplayout:
horizontalScrollView.onTouchEvent(event);
return false;
case R.id.listView:
horizontalScrollView.onTouchEvent(event);
return false;
}
return false;
}
};
}
效果图片:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询