博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android listview 动态布局 网格显示数据
阅读量:4607 次
发布时间:2019-06-09

本文共 12753 字,大约阅读时间需要 42 分钟。

声明,代码中一部分是摘自网络上,并不完全是自己写的

经过几天的请教,查找等,艰辛的过程,加上自己的修改,终于实现了自己满意的listview
可以水平,垂直滚动,可以响应checkbox,textview的点击事件,可以任意布局,加入任意控件。 跟大家分享是希望像我一样的新手少走弯路。
代码是完整的,不用任何修改即可实现图效果图中所示的效果 ,demo中用到的图片已上传
如有不足之处,请指正,共同交流,共同进步
代码:
vlist.xml
< ?xml version="1.0" encoding="utf-8"?>
< TableLayout android:id="@+id/tableLayout1"
android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<TableRow android:layout_width="fill_parent"
android:layout_height="wrap_content" android:id="@+id/listview">
<TextView android:layout_width="80dip" android:gravity="center"
android:layout_height="wrap_content" android:textColor="#42AF40"
android:drawableRight="@drawable/line_y" android:id="@+id/imageid_textview"></TextView>
<TextView android:layout_width="100dip"
android:layout_height="wrap_content" android:textColor="#42AF40"
android:drawableRight="@drawable/line_y" android:gravity="center"
android:id="@+id/taskid_textview"></TextView>
<TextView android:layout_width="100dip" android:gravity="center"
android:layout_height="wrap_content" android:textColor="#42AF40"
android:drawableRight="@drawable/line_y" android:id="@+id/machineid_textview"></TextView>
<TextView android:layout_width="140dip" android:gravity="center"
android:layout_height="wrap_content" android:textColor="#42AF40"
android:drawableRight="@drawable/line_y" android:id="@+id/position"></TextView>
<TextView android:layout_width="120dip" android:gravity="center"
android:layout_height="wrap_content" android:textColor="#42AF40"
android:drawableRight="@drawable/line_y" android:id="@+id/taskstatus"></TextView>
<TextView android:layout_width="80dip" android:gravity="center"
android:layout_height="wrap_content" android:textColor="#42AF40"
android:drawableRight="@drawable/line_y" android:id="@+id/a07_ls_button"></TextView>
<CheckBox android:textColor="#42AF40" android:layout_width="80dip"
android:gravity="center" android:layout_height="wrap_content"
android:drawableRight="@drawable/line_y" android:id="@+id/a07_ls_checkbox"></CheckBox>
</TableRow>
</TableLayout>
//
taskoklayout.xml
< LinearLayout android:id="@+id/relativeLayout1"
android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android">
<HorizontalScrollView
android:id="@+id/HorizontalScrollView01"
android:layout_height="400px"
android:layout_width="fill_parent"
android:layout_weight = "1"
>
<LinearLayout android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_weight="1">
<!-- 数据表格 -->
<ListView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:id="@+id/taskok_listView"
android:scrollbars="vertical">
</ListView>
</LinearLayout>
</HorizontalScrollView>
<LinearLayout android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_weight="4"
android:orientation="horizontal" xmlns:android="http://schemas.android.com/apk/res/android">
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/taskok_button"
android:id="@+id/taskok_button">
</Button>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/sendback_button"
android:id="@+id/sendback_button">
</Button>
<Button android:id="@+id/invalidate_button"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="@string/invalidate_button"></Button>
</LinearLayout>
<LinearLayout android:layout_height="fill_parent"
android:layout_width="fill_parent" android:layout_weight="4"
android:orientation="horizontal" xmlns:android="http://schemas.android.com/apk/res/android">
<Button android:id="@+id/back_button" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/back_button"></Button>
<Button android:id="@+id/daohang_button" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/daohang_button"></Button>
</LinearLayout>
< /LinearLayout>
activity
package Android.GPSTest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import Android.GlobalFunc.GlobalFunc;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
public class TaskCheckOk_Activity extends Activity {
private ListView list = null;
private Button taskok_button = null;
private Button sendback_button = null;
private Button invalidate_button = null;
private Button back_button = null;
private Button daohang_button = null;
private int list_index = -1;
private ListView lv;
public LinearLayout myRelative;
String taskid[] = { "TaskNo.1", "TaskNo.2", "TaskNo.3", "TaskNo.4",
"TaskNo.5", "TaskNo.6", "TaskNo.7", "TaskNo.8", "TaskNo.9",
"TaskNo.10" };
String machineid[] = { "MachineNo.1", "MachineNo.1", "MachineNo.1",
"MachineNo.1", "MachineNo.1", "MachineNo.1", "MachineNo.1",
"MachineNo.1", "MachineNo.1", "MachineNo.1" };
String position[] = { "sjz", "sjz", "sjz", "sjz", "sjz", "sjz", "sjz",
"sjz", "sjz", "sjz" };
String imageid[] = { "10123", "10124", "10125", "10126", "10127", "10123",
"10124", "10125", "10126", "10127" };
String taskstatus[] = { "已完成", "已完成", "已完成", "已完成", "已完成", "已完成", "已完成",
"已完成", "已完成", "已完成" };
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.taskoklayout);
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
for (int i = 0; i < taskid.length; i++) {
HashMap<String, String> map1 = new HashMap<String, String>();
map1.put("imageid", imageid);
map1.put("taskid", taskid);
map1.put("machineid", machineid);
map1.put("position", position);
map1.put("taskstatus", taskstatus);
map1.put("daohang", "
导航");
mylist.add(map1);
}
SpecialAdapter adapter = new SpecialAdapter(this, mylist,
R.layout.vlist, new String[] { "imageid", "taskid", "machineid",
"position", "taskstatus", "daohang" }, new int[] {
R.id.imageid_textview, R.id.taskid_textview,
R.id.machineid_textview, R.id.position,
R.id.taskstatus, R.id.a07_ls_button });
TextView t1 = new TextView(this);
t1.setGravity(Gravity.CENTER);
t1.setText("
图片");
t1.setBackgroundResource(R.drawable.bk);
TextView t2 = new TextView(this);
t2.setGravity(Gravity.CENTER);
t2.setText("
任务编号");
t2.setBackgroundResource(R.drawable.bk);
TextView t3 = new TextView(this);
t3.setText("
机械编号");
t3.setGravity(Gravity.CENTER);
t3.setBackgroundResource(R.drawable.bk);
TextView t4 = new TextView(this);
t4.setText("
当前位置");
t4.setGravity(Gravity.CENTER);
t4.setBackgroundResource(R.drawable.bk);
TextView t5 = new TextView(this);
t5.setText("
任务状态");
t5.setGravity(Gravity.CENTER);
t5.setBackgroundResource(R.drawable.bk);
TextView t6 = new TextView(this);
t6.setText("
开始导航");
t6.setGravity(Gravity.CENTER);
t6.setBackgroundResource(R.drawable.bk);
TextView t7 = new TextView(this);
t7.setText("
是否选择");
t7.setGravity(Gravity.CENTER);
t7.setBackgroundResource(R.drawable.bk);
LinearLayout linear = new LinearLayout(this);
linear.setBackgroundResource(R.drawable.bg_comment_grey);
linear.addView(t1, 80, 45);
linear.addView(t2, 100, 45);
linear.addView(t3, 100, 45);
linear.addView(t4, 140, 45);
linear.addView(t5, 120, 45);
linear.addView(t6, 80, 45);
linear.addView(t7, 80, 45);
lv = (ListView) findViewById(R.id.taskok_listView);//new ListView(this);
lv.setHorizontalScrollBarEnabled(true);
lv.setSelector(R.drawable.brick);
lv.addHeaderView(linear);//
设置listHeader 始终位于列表顶部
lv.setAdapter(adapter);
//lv.setHorizontalScrollBarEnabled(horizontalScrollBarEnabled)
//HorizontalScrollView hsv = (HorizontalScrollView) findViewById(R.id.HorizontalScrollView01);//new HorizontalScrollView(this);
//System.out.println("" + hsv);
//setContentView(hsv);
// lv = (ListView)findViewById(R.layout.main);
// lv.setHorizontalScrollBarEnabled(true);
// lv.setSelector(R.drawable.bg_setting_tablerow);
// lv.setAdapter(adapter);
// setContentView(lv);
initRes();
}
public void onBackPressed() {
// TODO Auto-generated method stub
System.out.println("
按下返回键");
return;
}
boolean initRes() {
taskok_button = (Button) findViewById(R.id.taskok_button);
sendback_button = (Button) findViewById(R.id.sendback_button);
invalidate_button = (Button) findViewById(R.id.invalidate_button);
daohang_button = (Button) findViewById(R.id.daohang_button);
back_button = (Button) findViewById(R.id.back_button);
setClickListener();
return true;
}
//
根据参数flag决定去得第X列的内容,每行的内容用*号隔开
String GetSelectItemData(int flag) {
String return_str = null;
for (int i = 0; i < list.getCount(); i++) {
if (MyAdapter.isSelected.get(i)) {
// TaskCheckViewHolder vHollder = (TaskCheckViewHolder)
// list.getChildAt(flag).getTag();
// return_str += vHollder.taskid_textview.getText().toString();
// return_str += "*";
// MyAdapter.
}
}
return GlobalFunc.StrToHex(return_str);
}
boolean setClickListener() {
taskok_button.setOnClickListener(new myButtonListener());
sendback_button.setOnClickListener(new myButtonListener());
invalidate_button.setOnClickListener(new myButtonListener());
daohang_button.setOnClickListener(new myButtonListener());
back_button.setOnClickListener(new myButtonListener());
return true;
}
class myButtonListener implements OnClickListener {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
if (v.getId() == R.id.taskok_button) {
GlobalFunc.ShowProgressDlg();
// GetSelectItemData(1);
} else if (v.getId() == R.id.sendback_button) {
} else if (v.getId() == R.id.daohang_button) {
} else if (v.getId() == R.id.back_button) {
intent.setClass(TaskCheckOk_Activity.this,
AppMenu_Activity.class);
TaskCheckOk_Activity.this.startActivity(intent);
} else if (v.getId() == R.id.invalidate_button) {
}
}
}
}
class SpecialAdapter extends SimpleAdapter {
private LayoutInflater mInflater;
private listviewHolder holder;
private int[] colors = new int[] { 0x30FF0000, 0x300000FF };
public SpecialAdapter(Context context, List<? extends Map<String, ?>> data,
int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
mInflater = LayoutInflater.from(context);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
final int temp_position = position;
int colorPos = position % colors.length;
if (colorPos == 1) {
view.setBackgroundColor(Color.argb(250, 255, 255, 255));
} else {
view.setBackgroundColor(Color.argb(250, 224, 243, 250));
}
holder = new listviewHolder();// (listviewHolder)view.getTag();
//System.out.println("" + holder);
holder.machineid_textview = (TextView) view
.findViewById(R.id.machineid_textview);
holder.machineid_textview.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
System.out.println("
机械编号--执行了点击事件,点击的行数为:" + temp_position);
}
});
holder.taskid_textview = (TextView) view
.findViewById(R.id.taskid_textview);
holder.taskid_textview.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
System.out.println("
任务编号--执行了点击事件,点击的行数为:" + temp_position);
}
});
holder.daohang_button = (TextView) view
.findViewById(R.id.a07_ls_button);
holder.daohang_button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
System.out.println("
导航--执行了点击事件,点击的行数为:" + temp_position);
}
});
holder.cbox = (CheckBox)view.findViewById(R.id.a07_ls_checkbox);
holder.cbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
if(isChecked)
{
System.out.println("
复选框以选中,选中的行数为:" + temp_position);
}
}
});
return view;
}
class listviewHolder {
public TextView taskid_textview;
public TextView machineid_textview;
public TextView position;
public TextView taskStatus;
public TextView daohang_button;
public CheckBox cbox;

}

转载于:https://www.cnblogs.com/hmyprograming/archive/2012/04/10/2441384.html

你可能感兴趣的文章
luogu P3809 【模板】后缀排序
查看>>
Matlab画图-非常具体,非常全面
查看>>
365. Water and Jug Problem
查看>>
队列实现霍夫曼树
查看>>
【Java】图片高质量缩放类
查看>>
详解定位与定位应用
查看>>
【前端开发】 5分钟创建 Mock Server
查看>>
java 从键盘录入的三种方法
查看>>
使用jQuery和YQL,以Ajax方式加载外部内容
查看>>
pyspider 示例
查看>>
JAVA 笔记(一)
查看>>
c# 范型Dictionary实用例子
查看>>
C#实现动态页面静态化
查看>>
可选参数、命名参数、.NET的特殊类型、特性
查看>>
利用CGLib实现动态代理实现Spring的AOP
查看>>
面试之SQL(1)--选出选课数量>=2的学号
查看>>
IIS处理并发请求时出现的问题
查看>>
优先队列小结
查看>>
线程安全与可重入函数之间的区别与联系
查看>>
{Nodejs} request URL 中文乱码
查看>>