1. 程式人生 > >ListView實現不同布局的顯示

ListView實現不同布局的顯示

null str 技術 cati 技術分享 返回 int blog get

ListView進行不同布局的顯示,就需要重寫5種方法,本文以兩種布局為例

技術分享

利用假數據進行模擬:

技術分享

添加適配器

技術分享

class MyBaseAdapter extends BaseAdapter{

@Override
public int getCount() {
return mData.size()+mReshdata.size();
}

@Override
public Object getItem(int i) {

return null;

}

@Override
public long getItemId(int i) {
return 0;
}

/**
*
* @return返回兩種類型布局
*/
@Override
public int getViewTypeCount() {
return 2;
}

/**
* 不同布局繪制狀況
// * @param position
* @return
*/
@Override
public int getItemViewType(int position) {
Log.d("TAG","POSITO="+position+","+"getcount="+mData.size());

if (position<mData.size()){
return first;
}else {
return second;
}

}

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
Log.d("TAG","I="+i);
int itemViewType = getItemViewType(i);
Log.d("TAG","itemViewType="+itemViewType);
ViewHolder holder = null;
ViewHolderTwo holder_se = null;
if (view == null){
switch (itemViewType){
case first:
holder = new ViewHolder();
view = View.inflate(getApplicationContext(), R.layout.item_lv, null);
holder.tv_data = (TextView) view.findViewById(R.id.tv_sj);
view.setTag(holder);
break;
case second:
holder_se = new ViewHolderTwo();
view = View.inflate(getApplicationContext(), R.layout.item_second, null);
holder_se.tv_second = (TextView) view.findViewById(R.id.tv_second);
view.setTag(holder_se);
break;
default:
break;
}
}else {
switch (itemViewType){
case first:
holder = (ViewHolder) view.getTag();
break;
case second:
holder_se = (ViewHolderTwo) view.getTag();
break;
default:
break;
}
}
switch (itemViewType){
case first:
String s = mData.get(mData.size()-1);//mData.get(i)
holder.tv_data.setText(s);
break;
case second:

Log.d("TAG","i-mData.size()="+ (i-mData.size()));

String second = mReshdata.get(i-mData.size());
holder_se.tv_second.setText(second);
break;
default:
break;
}
return view;
}
}
class ViewHolder{
TextView tv_data;

}
class ViewHolderTwo{
TextView tv_second;
}
進行不同布局的加載就實現了:
布局用的就是簡單的TextView就不列出了。

技術分享

同理實現多種類型,按照這樣的邏輯都可以實現。



ListView實現不同布局的顯示