import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.hx.zsnc.HomeActivity;
import com.hx.zsnc.R;
import com.hx.zsnc.ServiceActivity;
import com.hx.zsnc.utils.DensityUtil;
import com.hx.zsnc.utils.ServiceClick;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.ScrollView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.SimpleAdapter.ViewBinder;
import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.ListView;
public class MyServiceView extends ScrollView {
String[] item;
int[] itempic;
int[] itemid;
private ListView listview;
private List<List<Map<String, Object>>> listDatas;
private LinearLayout ll;
private int ll_height;
private Activity context;
public MyServiceView(Activity context, AttributeSet attrs) {
super(context, attrs);
}
public MyServiceView(Activity context, String[] item, int[] itempic,int[] itemid) {
super(context);
this.context=context;
this.item = item;
this.itempic = itempic;
this.itemid=itemid;
this.setScrollBarStyle(0);
this.setFillViewport(true);
this.setVerticalScrollBarEnabled(false);
ll = new LinearLayout(context);
ll.setOrientation(1);
this.addView(ll);
setListDatas();
initdata(context);
}
private void initdata(Context context) {
int size = listDatas.size();
Log.i("size", listDatas.size() + "");
ListView cornerListView;
LayoutParams lp;
listadapter adapter;
// ���¼��
int max = DensityUtil.dip2px(context, 20);
int min = DensityUtil.dip2px(context, 10);
int item = DensityUtil.dip2px(context, 80);
for (int i = 0; i < size; i++) {
cornerListView = new CornerListView(context);
LinearLayout.LayoutParams lp1 = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
if (i == 0 && i == (size - 1)) {
lp1.setMargins(0, max, 0, max);
} else if (i == 0) {
lp1.setMargins(0, min, 0, min);
} else if (i == (size - 1)) {
lp1.setMargins(0, min, 0, 0);
} else {
lp1.setMargins(0, min, 0, min);
}
cornerListView.setLayoutParams(lp1);
cornerListView.setCacheColorHint(0);
cornerListView.setScrollbarFadingEnabled(false);
cornerListView.setDivider(getResources().getDrawable(R.drawable.app_divider_h_gray));
ll.addView(cornerListView);
adapter = new listadapter(listDatas.get(i));
cornerListView.setAdapter(adapter);
setListViewHeightBasedOnChildren(cornerListView);
}
}
public void setListDatas() {
listDatas = new ArrayList<List<Map<String, Object>>>();
listDatas.clear();
List<Map<String, Object>> listData = new ArrayList<Map<String, Object>>();
Map<String, Object> map;
for (int i = 0; i < item.length; i++) {
if ("".equals(item[i])) {
listDatas.add(listData);
listData = new ArrayList<Map<String, Object>>();
} else {
map = new HashMap<String, Object>();
map.put("text", item[i]);
map.put("pic", itempic[i]);
map.put("id", itemid[i]);
listData.add(map);
}
}
listDatas.add(listData);
}
// ���������� �������
class listadapter extends BaseAdapter {
List<Map<String, Object>> map;
public listadapter(List<Map<String, Object>> map) {
this.map = map;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return map.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return map.get(arg0);
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
final HashMap<String, Object> mymap = (HashMap<String, Object>) map
.get(arg0);
View view = View.inflate(getContext(), R.layout.listitem, null);
TextView tv = (TextView) view.findViewById(R.id.tv);
tv.setText((CharSequence) mymap.get("text"));
ImageView iv = (ImageView) view.findViewById(R.id.iv);
iv.setImageResource((Integer) mymap.get("pic"));
/*if (arg0 == map.size() - 1) {
ImageView iv_dividerline = (ImageView) view
.findViewById(R.id.iv_divider);
iv_dividerline.setVisibility(View.GONE);
}*/
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ServiceClick.serviceclick(context, mymap);
}
});
return view;
}
}
/**
* ����listview�ĸ߶ȣ�����scrollviewǶ��listview����ֹlistview������
*
* @param listView
*/
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
// pre-condition
return;
}
int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight
+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
}
}
自定义listview
最新推荐文章于 2019-04-12 16:36:54 发布