现在的位置: 首页 > 综合 > 正文

android listview item 加载不同的布局样式文件

2013年09月13日 ⁄ 综合 ⁄ 共 7965字 ⁄ 字号 评论关闭

listview在加载不同的样式文件的时候,listview会有不同的样式布局显示,此时个人的经验使用实例:

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.AnimationDrawable;
import android.provider.ContactsContract.CommonDataKinds.Photo;
import android.provider.ContactsContract.Data;
import android.text.ClipboardManager;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import com.um.mplus.AddVoicesActivity;
import com.um.mplus.R;
import com.um.mplus.UMApplication;
import com.um.mplus.VoicesInfoActivity;
import com.um.mplus.data.DataManageInterface.ItemBean;
import com.um.mplus.util.VoicesRecord;

public class VoiceInfoAdapter extends BaseAdapter {
private String TAG = "VoiceInfoAdapter";

final int VIEW_TYPE =7;
final int TYPE_0= 0;
final int TYPE_1 = 1;
final int TYPE_2 = 2;
final int TYPE_3= 3;
final int TYPE_4 = 4;
final int TYPE_5= 5;
final int TYPE_6 = 6;

public VoiceInfoAdapter(VoicesInfoActivity con, VoicesRecord voice) {
mContext = con;

}

public void setData(List<ItemBean> ls) {
mList = ls;

}

public void clearData() {
if (mList != null) {
mList.clear();
}
}

@Override
public int getCount() {
if (mList != null) {
return mList.size();
}
return 0;
}

@Override
public Object getItem(int position) {
if (mList != null) {
return mList.get(mList.size() - 1 - position);
}
return null;
}

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

@Override
public int getItemViewType(int position) {

int type=super.getItemViewType(position);
ItemBean item = mList.get(mList.size() - 1 - position);
if (item != null) {
if (item.rimType == 0) {
if (item.type == 1) {
type=0;
} else if (item.type == 2) {
type=1;
}
} else if (item.rimType == 1) {
if (item.type == 1) {
type=2;
} else if (item.type == 2) {
type=3;
}
} else if (item.rimType == 2) {
if (item.type == 1) {
type=4;
} else if (item.type == 2) {
type=5;
}
}else if(item.rimType == 4){
type=6;
}
}
return type;//这里根据不同的item的布局类型来做判断
}

@Override
public int getViewTypeCount() {//这里需要返回需要集中布局类型,总大小为类型的种数的下标
return VIEW_TYPE;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (position < mList.size()) {
ItemBean item = mList.get(mList.size() - 1 - position);
if (item != null) {
int viewType=getItemViewType(position);
if (viewType ==TYPE_FROM_SYS_TEXT) {// system text
final ViewHolderFromSysText holder_from_sys_text;
if (convertView == null) {
holder_from_sys_text = new ViewHolderFromSysText();
convertView = LayoutInflater
.from(mContext)
.inflate(
R.layout.voices_info_item_from_systext,
null);
holder_from_sys_text.tv_content = (UMTextView) convertView
.findViewById(R.id.voices_info_item_content);

convertView.setTag(holder_from_sys_text);
} else {
holder_from_sys_text = (ViewHolderFromSysText) convertView
.getTag();
}
if (item.content == null) {
item.content = "";
}

if (item.read == 0) {
holder_from_sys_text.tv_unread
.setVisibility(View.VISIBLE);
} else {
holder_from_sys_text.tv_unread
.setVisibility(View.GONE);
}

holder_from_sys_text.tv_content.setTag(item);
holder_from_sys_text.tv_content
.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
mLongClickItem = (ItemBean) v.getTag();
showDialog(mLongClickItem.name, false,v);
return false;
}
});
} else if (viewType ==TYPE_TO_SYS_TEXT) {
final ViewHolderToSysText holder_to_sys_text;
if (convertView == null) {
holder_to_sys_text = new ViewHolderToSysText();
convertView = LayoutInflater
.from(mContext)
.inflate(
R.layout.voices_info_item_to_systext,
null);
holder_to_sys_text.tv_content = (UMTextView) convertView

convertView.setTag(holder_to_sys_text);
} else {
holder_to_sys_text = (ViewHolderToSysText) convertView
.getTag();
}
if (item.content == null) {
item.content = "";
}
holder_to_sys_text.tv_content.setText("");
if(item.content.indexOf("http")>=0){
holder_to_sys_text.tv_content
.setText(item.content);
}else{
holder_to_sys_text.tv_content
.setSpanText(item.content);
}


} else if (viewType ==TYPE_FROM_VOICE_TEXT) {// from voices_text
final ViewHolderFromVoiceText holder_from_voice_text;
if (convertView == null) {
holder_from_voice_text = new ViewHolderFromVoiceText();
convertView = LayoutInflater.from(mContext).inflate(
R.layout.voices_info_item_from_voicetext,
null);

convertView.setTag(holder_from_voice_text);
} else {
holder_from_voice_text = (ViewHolderFromVoiceText) convertView
.getTag();
}
if (item.content == null) {
item.content = "";
}
holder_from_voice_text.tv_content.setText("");
if(item.content.indexOf("http")>=0){
holder_from_voice_text.tv_content
.setText(item.content);
}else{
holder_from_voice_text.tv_content
.setSpanText(item.content);
}

} else if (viewType ==TYPE_TO_VOICE_TEXT) {
final ViewHolderToVoiceText holder_to_voices_text;
if (convertView == null) {
holder_to_voices_text = new ViewHolderToVoiceText();
convertView = LayoutInflater
.from(mContext)
.inflate(
R.layout.voices_info_item_to_voicetext,
null);

convertView.setTag(holder_to_voices_text);
} else {
holder_to_voices_text = (ViewHolderToVoiceText) convertView
.getTag();
}
if (item.content == null) {
item.content = "";
}
holder_to_voices_text.tv_content.setText("");
if(item.content.indexOf("http")>=0){
holder_to_voices_text.tv_content
.setText(item.content);
}else{
holder_to_voices_text.tv_content
.setSpanText(item.content);
}



} else if (viewType==TYPE_FROM_VOICE_VOICE) {//from  voices
final ViewHolderFromVoice holder_from_voice;
if (convertView == null) {
holder_from_voice = new ViewHolderFromVoice();
convertView = LayoutInflater
.from(mContext)
.inflate(
R.layout.voices_info_item_from_voice,
null);

convertView.setTag(holder_from_voice);
} else {
holder_from_voice = (ViewHolderFromVoice) convertView
.getTag();
}


holder_from_voice.photo.setImageBitmap(mPhotoImage);
if (item.date == null) {
item.date = "";
}
holder_from_voice.tv_time.setText(item.date.toString());

} else if (viewType==TYPE_TO_VOICE_VOICE) {//to voice
final ViewHolderToVoice holder;
if (convertView == null) {
convertView = LayoutInflater.from(mContext)
.inflate(
R.layout.voices_info_item_to_voice,
null);
holder = new ViewHolderToVoice();
holder.tv_content = (View) convertView
.findViewById(R.id.voices_info_item_content);

convertView.setTag(holder);
} else {
holder = (ViewHolderToVoice) convertView.getTag();
}


if (item.date == null) {
item.date = "";
}
holder.tv_duration.setText(item.voicesLenght + "''");

}else if(viewType ==TYPE_FROM_SYS_APP){//system app voices
final ViewHolderFromVoice holder_from_voice;
if (convertView == null) {
holder_from_voice = new ViewHolderFromVoice();
convertView = LayoutInflater
.from(mContext)
.inflate(
R.layout.voices_info_item_from_app,
null);
holder_from_voice.view_content = convertView
.findViewById(R.id.voices_info_item_content);

convertView.setTag(holder_from_voice);
} else {
holder_from_voice = (ViewHolderFromVoice) convertView.getTag();
}

if (item.content == null) {
item.content = "";
}

holder_from_voice.tv_time.setText(item.date.toString());

}

}
}
return convertView;
}

public class ViewHolderFromSysText {
UMTextView tv_content;
ImageView photo;
TextView tv_time;
TextView tv_unread;
//ImageView voices_info_source_line;
}

public class ViewHolderToSysText {
UMTextView tv_content;
TextView tv_time;
ImageView tv_unread;
ImageView source;
ProgressBar progress;
ImageView voices_info_source_line;
}

public class ViewHolderFromVoiceText {
UMTextView tv_content;
ImageView photo;
TextView tv_time;
TextView tv_unread;
//ImageView voices_info_source_line;
}

public class ViewHolderToVoiceText {
UMTextView tv_content;
TextView tv_time;
ImageView tv_unread;
ImageView source;
ProgressBar progress;
ImageView voices_info_source_line;
}

public class ViewHolderFromVoice {
View view_content;
ImageView photo;
TextView tv_duration;
TextView tv_time;
ImageView tv_unread;
//ImageView voices_info_source_line;
ImageView voice_undown;
ProgressBar progress_down;
}

public class ViewHolderToVoice {
View tv_content;
TextView tv_time;
TextView tv_duration;
ImageView paly_anim;
ImageView tv_unread;
ImageView source;
ProgressBar progress;
ImageView voices_info_source_line;
}

}

抱歉!评论已关闭.