2013-01-04 102 views
0

我想从ListView隐藏图像,在这里,我已经使用自定义列表视图与BaseAdapter 请参见下面的图像,这对Edit btn图片点击1应该是可见的,隐藏图像BaseAdapter

的ListView图像是遵循

ListView image

我已经对点击做到了这一点代码

   ++btnClick; 
      if (btnClick % 2 == 0) 
      { 
       textView.setText("Edit"); 
       baseAdapter.holder.imgPhoto.setVisibility(View.INVISIBLE); 
      } else { 
       textView.setText("Done"); 
       Log.e("call", "Done"); 
baseAdapter.holder.imgPhoto.setVisibility(View.VISIBLE); 

      }; 

其中baseAdapterBaseAdapter对象,这是什么按钮只有最后一个按钮隐形,因为它越来越最后引用的点击情况,我不想再reaload BaseAdapter

BaseAdapterFavotites.java

public class BaseAdapterFavotites extends BaseAdapter { 

private ArrayList<SearchResults> searchArrayList; 
public ArrayList<String> getSchoolId, getSchoolName; 
private LayoutInflater mInflater; 
public ViewHolder holder; 
Context context; 
public String s; 
HashMap<String, String> mapSchoolToLink = new HashMap<String, String>();; 

public BaseAdapterFavotites(Context context, 
    ArrayList<SearchResults> results, ArrayList<String> arrayId, 
    ArrayList<String> arraySchoolName) { 
    searchArrayList = results; 
    mInflater = LayoutInflater.from(context); 
    getSchoolId = arrayId; 
    this.context = context; 
    getSchoolName = arraySchoolName; 
} 

public int getCount() { 
    return searchArrayList.size(); 
} 

public Object getItem(int position) { 
    return searchArrayList.get(position); 
} 

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

public View getView(final int position, View convertView, ViewGroup parent) { 

    if (convertView == null) { 
     convertView = mInflater.inflate(R.layout.custom_row_for_favorites, 
       null); 
     holder = new ViewHolder(); 
     holder.txtSchoolNameList = (TextView) convertView 
       .findViewById(R.id.schoolNameFav); 

     holder.imgPhoto = (ImageView) convertView.findViewById(R.id.delete); 

     convertView.setTag(holder); 

    } else { 
     holder = (ViewHolder) convertView.getTag(); 

    } 

    holder.txtSchoolNameList.setText(searchArrayList.get(position) 
      .getschoolNameFromList()); 

    Log.e("holder", searchArrayList.get(position).getschoolNameFromList()); 

    holder.imgPhoto.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      mapSchoolToLink.clear(); 
      searchArrayList.remove(position); 
      getSchoolId.remove(position); 
      getSchoolName.remove(position); 
      notifyDataSetChanged(); 
      Log.e("inside base", searchArrayList.toString()); 
      Log.e("inside getSchoolId", getSchoolId.toString()); 

      for (int i = 0; i < getSchoolId.size(); i++) { 
       mapSchoolToLink.put(getSchoolName.get(i), 
         getSchoolId.get(i)); 
      } 

      SharedPreferences.Editor editor = context 
        .getSharedPreferences("mytest", 0).edit().clear(); 
      for (Entry<String, String> entry : mapSchoolToLink.entrySet()) { 
       editor.putString(entry.getKey(), entry.getValue()); 
      } 
      editor.commit(); 

     } 
    }); 
    return convertView; 
} 

public class ViewHolder { 
    TextView txtSchoolNameList; 
    public ImageView imgPhoto; 
} 

} 

我不得不隐藏图像从ActivityBaseAdapter这个

+0

1:你想** **隐藏或使** **看不见?如果隐藏然后使用View.GONE,并且如果想使其不可见,那么使用View.INVISIBLE –

+0

确切多数民众赞成我想要做 –

+0

使用baseAdapter.holder.imgPhoto.setVisibility(ImageView.GONE); –

回答

1

您可以使用国旗管理的可视性和适配器getView检查标志值。在这两种情况下,如果(convertView == null)和其他部分也。

和编辑按钮设置标志值的点击虚假和ListView.invalidate()notifyDataSetChanged()

+0

感谢好友完美地工作 –

2

您可以设置在适配器中的字段变量,你活动的任何解决方案,即控制图像是否可见,请将其称为inEditMode。在getView()使用:

if(inEditMode) { 
    holder.imgPhoto.setVisibility(View.GONE); 
} 
else { 
    holder.imgPhoto.setVisibility(View.VISIBLE); 
} 

当你切换的inEditMode状态,你必须调用notifyDatasetChanged()更新整个ListView控件。


加成

public View getView(final int position, View convertView, ViewGroup parent) { 
    // Recycling and View Holder code... 

    holder.txtSchoolNameList.setText(searchArrayList.get(position) 
      .getschoolNameFromList()); 

    Log.e("holder", searchArrayList.get(position).getschoolNameFromList()); 

    if(inEditMode) { 
     holder.imgPhoto.setVisibility(View.GONE); 
    } 
    else { 
     holder.imgPhoto.setVisibility(View.VISIBLE); 
    } 

    // Setting an OnClickListener that should happen in (convertView == null) { ... } 
    return convertView; 
} 
+0

好友我已设置编辑按钮在活动 –

+2

“好友”“读我的”答案“伙计”,您必须使用适配器而不是活动。 – Sam

+0

@Rstar - 请参阅我上面的评论。我认为问题可能是您的持有人位于适配器级别。因此,您只能参考单个图像。您需要为列表中的每一行拥有一个持有者。 – EJK