0

から画像を非表示にしたいListView、ここでカスタムリストビューを使用しBaseAdapter ました 下の画像を参照してください 、ここでEdit btn 画像1をクリックすると表示されます 、

ListViewの画像は以下の通りです

リストビュー画像

Activityのクリックでこのコードを実行しましたbutton

             ++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);

            };

baseAdapterのオブジェクトはどこにありBaseAdapterますか 、ここでボタンをクリックすると何が起こるか 最後のボタンのみ最後の参照を取得しているため非表示です。再度再読み込みしたくありませんBaseAdapter

BaseAdapterFavorites.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;
}

}

このためのソリューションから画像を非表示にActivityする必要がありますBaseAdapter

4

2 に答える 2

2

アクティビティではなく、アダプターでフィールド変数を設定して、画像が表示されるかどうかを制御し、それを呼び出すことができますinEditMode。使用中getView():

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

状態を切り替えるたびに、呼び出して ListView 全体を更新するinEditMode必要があります。notifyDatasetChanged()


添加

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;
}
于 2013-01-04T05:50:57.833 に答える
1

フラグを使用して、アダプターのgetViewで可視性を管理し、フラグ値を確認できます。どちらの場合も、if(convertView == null)とelsepartもあります。

編集ボタンをクリックすると、フラグ値がfalseに設定されますListView.invalidate()notifyDataSetChanged()

于 2013-01-04T06:20:16.457 に答える