预览效果图:
一、自定义XListView继承自FrameLayout
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ListAdapter;
import com.aikaka.sogo.R;
public class XListView extends FrameLayout{
private ViewGroup column0,column1;
public ChildListView(Context context, AttributeSet attrs) {
super(context, attrs);
addView(View.inflate(context, R.layout.xlistview, null));
column0=(ViewGroup) findViewById(R.id.column0);
column1=(ViewGroup) findViewById(R.id.column1);
}
//
private ListAdapter adapter;
public void setAdapter(ListAdapter adapter){
if(adapter==null){
return;
}
this.adapter=adapter;
}
public void notifyDatasetChanged(){
int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
for(int i=0;i<adapter.getCount();i++){
View child=adapter.getView(i, null, null);
column0.measure(w, h); column1.measure(w, h);
if(column0.getMeasuredHeight()<=column1.getMeasuredHeight()){
column0.addView(child);
}else{
column1.addView(child);
}
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<LinearLayout
android:id="@+id/column0"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/line"
android:layout_width="1px"
android:layout_height="fill_parent"
android:background="#ffd7d7d7"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/column1"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:orientation="vertical" >
</LinearLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
在自己使用的类中
ArrayList<Map<String,String>> list = new ArrayList<Map<String,String>>();
XListView xListView=(XListView) findViewById(R.id.xListView);
XListAdapter adapter = new XListAdapter(MainActivity.this,list);
xListView.setAdapter(adapter);
list 从网络获取数据添加以后 调用 xListView.notifyDatasetChanged();