Java Android ListView项目在滚动时消失
我已使用适配器将一些图片加载到ListView中。当用户单击列表中的任何一行时,我会在末尾显示一个复选标记:Java Android ListView项目在滚动时消失,java,android,listview,Java,Android,Listview,我已使用适配器将一些图片加载到ListView中。当用户单击列表中的任何一行时,我会在末尾显示一个复选标记: public class LazyImageLoadAdapter extends BaseAdapter implements OnClickListener{ private Activity activity; List<String> names,facebookbid; String sent; private LayoutIn
public class LazyImageLoadAdapter extends BaseAdapter implements OnClickListener{
private Activity activity;
List<String> names,facebookbid;
String sent;
private LayoutInflater inflater=null;
public ImageLoader imageLoader;
public LazyImageLoadAdapter(Activity a, List<String> n,List<String> fid,String s) {
activity = a;
names=n;
facebookbid=fid;
sent=s;
inflater = (LayoutInflater)activity.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader = new ImageLoader(activity.getApplicationContext(),"p");
}
@Override
public int getViewTypeCount() {
if (getCount() != 0)
return getCount();
return 1;
}
public int getCount() {
return facebookbid.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
/********* Create a holder Class to contain inflated xml file elements *********/
public class ViewHolder{
public TextView text;
public ImageView image;
public ImageView checkmark;
public RelativeLayout friendsrow;
}
public View getView(final int position, View convertView, ViewGroup parent) {
convertView=null;
final ViewHolder holder;
if(convertView==null){
/****** Inflate tabitem.xml file for each row ( Defined below ) *******/
convertView = inflater.inflate(R.layout.planners_friends_listrow, null);
/****** View Holder Object to contain tabitem.xml file elements ******/
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.planner_friend_name);
(ImageView)convertView.findViewById(R.id.planner_friend_image);
holder.checkmark=(ImageView)convertView.findViewById(R.id.checkmark);
holder.friendsrow=(RelativeLayout)convertView.findViewById(R.id.friendsrow);
/************ Set holder with LayoutInflater ************/
convertView.setTag( holder );
}
else
holder=(ViewHolder)convertView.getTag();
holder.text.setText(names.get(position));
Typeface face = Typeface.createFromAsset(convertView.getContext().getAssets(),
"fonts/MAXWELL REGULAR.ttf");
holder.text.setTypeface(face);
ImageView image = holder.image;
String link;
if(sent.equals("planners"))
{link=facebookbid.get(position);
}
else
{
link="https://graph.facebook.com/"+facebookbid.get(position)+"/picture?type=large";
}
//DisplayImage function from ImageLoader Class
imageLoader.DisplayImage(link, image);
holder.friendsrow.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
boolean a=isNetworkConnected();
if(a==true)
{
if(sender.equals("settings"))
{
}
else if(sender.equals("savethedate"))
{
if(sid.contains(facebookbid.get(position)))
{
if(sid.contains("_"))
{
sid=sid.replace("_"+facebookbid.get(position), "");
}
else
{
sid=sid.replace(facebookbid.get(position), "");
}
nb_selections--;
selectedids.remove(selectedids.size()-1);
sidetitle.setText("Invite ("+String.valueOf(nb_selections)+") friends");
holder.checkmark.setVisibility(View.GONE);
}
else
{
if(sid.isEmpty())
{
sid=sid+facebookbid.get(position);
}
else
{
sid=sid+"_"+facebookbid.get(position);
}
nb_selections++;
selectedids.add(facebookbid.get(position));
sidetitle.setText("Invite ("+String.valueOf(nb_selections)+") friends");
holder.checkmark.setVisibility(View.VISIBLE);
}
}
else
{
String friendname=names.get(position);
String friendid=facebookbid.get(position);
String friendgender=gender.get(position);
Intent resultIntent = new Intent(Friends.this,Newmarriage.class);
resultIntent.putExtra("facebookbid", friendid);
resultIntent.putExtra("name", friendname);
resultIntent.putExtra("gender", friendgender);
if(sender.equals("planner"))
{
resultIntent.putExtra("plannerid",friendid);
resultIntent.putExtra("imageurl","https://graph.facebook.com/"+friendid+"/picture?type=large");
setResult(Activity.RESULT_OK, resultIntent);
finish();
}
else
{
resultIntent.putExtra("plannerid","");
resultIntent.putExtra("imageurl","");
setResult(Activity.RESULT_OK, resultIntent);
finish();
}
}
}
else
{
Toast.makeText(getApplicationContext(),"No internet connection",Toast.LENGTH_LONG).show();
}
}
});
/******** Set Item Click Listner for LayoutInflater for each row ***********/
// vi.setOnClickListener(new OnItemClickListener(position));
return convertView;
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
}
}
公共类LazyImageLoadAdapter扩展BaseAdapter实现OnClickListener{
私人活动;
列表名称、facebook出价;
发送字符串;
专用充气机=空;
公共图像加载器;
公共LazyImageLoadAdapter(活动a、列表n、列表fid、字符串s){
活动=a;
名称=n;
facebookbid=fid;
发送=s;
充气器=(充气器)活动。
getSystemService(上下文布局\充气机\服务);
imageLoader=新的imageLoader(activity.getApplicationContext(),“p”);
}
@凌驾
public int getViewTypeCount(){
如果(getCount()!=0)
返回getCount();
返回1;
}
public int getCount(){
返回facebookbid.size();
}
公共对象getItem(int位置){
返回位置;
}
公共长getItemId(int位置){
返回位置;
}
/*********创建holder类以包含膨胀的xml文件元素*********/
公共类视图持有者{
公共文本查看文本;
公众形象;
公共图像查看复选标记;
公共关系;青年朋友;
}
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
convertView=null;
最终持票人;
if(convertView==null){
/******为每行(定义如下)膨胀tabitem.xml文件*******/
convertView=充气机。充气(R.layout.planners\u friends\u listrow,空);
/******要包含tabitem.xml文件元素的视图持有者对象******/
holder=新的ViewHolder();
holder.text=(TextView)convertView.findViewById(R.id.planner\u friend\u name);
(ImageView)convertView.findViewById(R.id.planner\u friend\u image);
holder.checkmark=(ImageView)convertView.findViewById(R.id.checkmark);
holder.friendsrow=(RelativeLayout)convertView.findViewById(R.id.friendsrow);
/************带压平机的固定架************/
convertView.setTag(支架);
}
其他的
holder=(ViewHolder)convertView.getTag();
holder.text.setText(names.get(position));
Typeface=Typeface.createFromAsset(convertView.getContext().getAssets(),
“fonts/MAXWELL REGULAR.ttf”);
holder.text.setTypeface(面);
ImageView image=holder.image;
串链;
如果(发送等于(“计划者”))
{link=facebookbid.get(位置);
}
其他的
{
链接=”https://graph.facebook.com/“+facebookbid.get(position)+”/picture?type=large”;
}
//ImageLoader类中的DisplayImage函数
imageLoader.DisplayImage(链接,图像);
holder.friendsrow.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
布尔值a=isNetworkConnected();
如果(a==true)
{
if(sender.equals(“设置”))
{
}
else if(sender.equals(“savethedate”))
{
if(sid.contains(facebookbid.get(position)))
{
if(sid.contains(“”))
{
sid=sid.replace(“”+facebookbid.get(position),”);
}
其他的
{
sid=sid.replace(facebookbid.get(位置),“”);
}
nb_选择--;
选择edids.remove(选择edids.size()-1);
sidetitle.setText(“邀请”(+String.valueOf(nb_选择)+”)朋友);
holder.checkmark.setVisibility(视图.消失);
}
其他的
{
if(sid.isEmpty())
{
sid=sid+facebookbid.get(位置);
}
其他的
{
sid=sid+“”+facebookbid.get(位置);
}
nb_++;
选择edids.add(facebookbid.get(position));
sidetitle.setText(“邀请”(+String.valueOf(nb_选择)+”)朋友);
支架.复选标记.设置可见性(视图.可见);
}
}
其他的
{
String friendname=names.get(位置);
String-friendid=facebookbid.get(位置);
String friendgender=gender.get(position);
Intent resultent=新的Intent(Friends.this、newmarry.class);
结果:putExtra(“facebookbid”,friendid);
resultIntent.putExtra(“名称”,friendname);
结果:putExtra(“性别”,friendgender);
if(发送方等于(“计划方”))
{
结果:putExtra(“plannerid”,friendid);
resultIntent.putExtra(“imageurl”https://graph.facebook.com/“+friendid+”/picture?type=large”);
设置结果(Activity.RESULT\u OK,resultent);
完成();
}
其他的
{
resultIntent.putExtra(“plannerid”,即“);
public class LazyImageLoadAdapter extends BaseAdapter implements OnClickListener {
private Activity activity;
List<String> names, facebookbid;
String sent;
public ImageLoader imageLoader;
private int size = 0;
private HashMap<String, Boolean> mapClickStatus;
public LazyImageLoadAdapter(Activity a, List<String> n, List<String> fid, String s) {
activity = a;
names = n;
facebookbid = fid;
sent = s;
mapClickStatus = new HashMap<String, Boolean>();
if (facebookbid != null)
size = facebookbid.size();
// Give total size of the list item to getCount method
imageLoader = new ImageLoader(activity, "p");
}
@Override
public int getCount() {
return size;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
/*********
* Create a holder Class to contain inflated xml file elements
*********/
public class ViewHolder {
public TextView text;
public ImageView image;
public ImageView checkmark;
public RelativeLayout friendsrow;
}
public View getView(final int position, View convertView, ViewGroup parent) {
// convertView=null;
//It should not be null every time
final ViewHolder holder;
if (convertView == null) {
/****** Inflate tabitem.xml file for each row ( Defined below ) *******/
convertView = LayoutInflater.from(activity).inflate(R.layout.planners_friends_listrow, parent, false);
/****** View Holder Object to contain tabitem.xml file elements ******/
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.planner_friend_name);
(ImageView) convertView.findViewById(R.id.planner_friend_image);
holder.checkmark = (ImageView) convertView.findViewById(R.id.checkmark);
holder.friendsrow = (RelativeLayout) convertView.findViewById(R.id.friendsrow);
/************ Set holder with LayoutInflater ************/
convertView.setTag(holder);
} else
holder = (ViewHolder) convertView.getTag();
holder.text.setText(names.get(position));
Typeface face = Typeface.createFromAsset(convertView.getContext().getAssets(),
"fonts/MAXWELL REGULAR.ttf");
holder.text.setTypeface(face);
ImageView image = holder.image;
String link;
if (sent.equals("planners")) {
link = facebookbid.get(position);
} else {
link = "https://graph.facebook.com/" + facebookbid.get(position) + "/picture?type=large";
}
//DisplayImage function from ImageLoader Class
imageLoader.DisplayImage(link, image);
// set the visibility of CheckMark ImageView based on the click status.
if (mapClickStatus.get(facebookbid.get(position)))
holder.checkmark.setVisibility(View.VISIBLE);
else
holder.checkmark.setVisibility(View.GONE);
holder.friendsrow.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
boolean a = isNetworkConnected();
/// I dont know about the unique ID field in this so i took facebookbid.get(position) as a key
// To set click status of row item in hashmap.
mapClickStatus.put(facebookbid.get(position),
mapClickStatus.containsKey(facebookbid.get(position)) ? false : true);
if (a == true) {
if (sender.equals("settings")) {
} else if (sender.equals("savethedate")) {
if (sid.contains(facebookbid.get(position))) {
if (sid.contains("_")) {
sid = sid.replace("_" + facebookbid.get(position), "");
} else {
sid = sid.replace(facebookbid.get(position), "");
}
nb_selections--;
selectedids.remove(selectedids.size() - 1);
sidetitle.setText("Invite (" + String.valueOf(nb_selections) + ") friends");
// holder.checkmark.setVisibility(View.GONE);
} else {
if (sid.isEmpty()) {
sid = sid + facebookbid.get(position);
} else {
sid = sid + "_" + facebookbid.get(position);
}
nb_selections++;
selectedids.add(facebookbid.get(position));
sidetitle.setText("Invite (" + String.valueOf(nb_selections) + ") friends");
// holder.checkmark.setVisibility(View.VISIBLE);
}
// TO refresh view with updated checkmark status
notifyDataSetChanged();
} else {
String friendname = names.get(position);
String friendid = facebookbid.get(position);
String friendgender = gender.get(position);
Intent resultIntent = new Intent(Friends.this, Newmarriage.class);
resultIntent.putExtra("facebookbid", friendid);
resultIntent.putExtra("name", friendname);
resultIntent.putExtra("gender", friendgender);
if (sender.equals("planner")) {
resultIntent.putExtra("plannerid", friendid);
resultIntent.putExtra("imageurl", "https://graph.facebook.com/" + friendid + "/picture?type=large");
setResult(Activity.RESULT_OK, resultIntent);
finish();
} else {
resultIntent.putExtra("plannerid", "");
resultIntent.putExtra("imageurl", "");
setResult(Activity.RESULT_OK, resultIntent);
finish();
}
}
} else {
Toast.makeText(getApplicationContext(), "No internet connection", Toast.LENGTH_LONG).show();
}
}
});
/******** Set Item Click Listner for LayoutInflater for each row ***********/
// vi.setOnClickListener(new OnItemClickListener(position));
return convertView;
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
}
}
convertView = LayoutInflater.from(activity).inflate(R.layout.planners_friends_listrow, parent, false);
if (checked) {
//set visibility of the checkmark to visible
} else {
//set visibility of the checkmark to gone
}