2017-03-20 18 views
-2

ListAdapterに名前のリストがあります。アイコンとアイコンの名前が表示されます。それが再び選択するとListAdapterの選択項目に目盛りを追加します。

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View view; 

    if (convertView == null) { 
     view = mInflater.inflate(R.layout.list_item_icon_text, parent, false); 
    } else { 
     view = convertView; 
    } 

    AppModel item = getItem(position); 

     ImageView myicon = (ImageView) view.findViewById(R.id.iconList); 
     myicon.setImageDrawable(item.getIcon()); 
       ((TextView)view.findViewById(R.id.textList)).setText(item.getLabel()); 

    } 

    return view; 
} 

は今、私は名前をクリックして、それが選択されていることを示すために右側の目盛りを表示したい、チェックマークが見えなくなるはずです。これまでのところ、AをクリックするとHに目盛りが表示されることがあるので、ImageViewとして目盛りアイコンを配置しようとして失敗しました。 convertViewの、あなたが言ったような問題は、問題を解決normal.Toあるので

答えて

0

、あなたは次のように行うことができます。

  1. AppModel

    public class AppModel { 
    
    
    //.... 
    //your own attributes 
    
    
    private boolean selected; 
    
    public boolean isSelected() { 
        return selected; 
    } 
    
    public void setSelected(boolean selected) { 
        this.selected = selected; 
    } 
    

    }

  2. boolean selected属性を追加します
  3. tick ImageViewをレイアウトに追加します。アイテムビューを膨張させるときには、目盛を表示するかどうかを制御するためにboolean selectedを使用します。

    AppModel item = getItem(position); 
    ImageView tick = (ImageView) view.findViewById(R.id.tick); 
    tick.setVisibility(item.isSelected()?View.VISIBLE:View.GONE); 
    
  4. ビューにOnClickListenerを追加します。

    view.setOnClickListener(new View.OnClickListener() { 
    
        @Override 
        public void onClick(View view) { 
         item.setSelected(!item.isSelected()); 
         notifyDataSetChanged(); 
        } 
    }); 
    
+0

はありがとうございました。私は2日間試みた。あなたは魔法です。 – doraemon

+0

あなたは大歓迎です:) – xiaoyuan

関連する問題