A. isEnabled を Override して、 getView で 区切り行のときと、そうでないときで返す View を変えます
* 区切り行とは、Android Market アプリの 緑の区切りのようなやつのことです。ListView の1行ですが、タップしても反応しません。
public class ExtendsArrayAdapterSample2 extends ListActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
List<bindData> data = new ArrayList<bindData>();
data.add(new bindData("Clock", R.drawable.alermclock));
data.add(new bindData("-", 0));
data.add(new bindData("Camera", R.drawable.camera));
data.add(new bindData("-", 0));
data.add(new bindData("Book", R.drawable.bookopen));
data.add(new bindData("-", 0));
data.add(new bindData("Calculator", R.drawable.calculator));
data.add(new bindData("-", 0));
MyAdapter adapter = new MyAdapter(this, R.layout.list_item5, data);
setListAdapter(adapter);
}
class bindData {
String text;
int imageResourceId;
public bindData(String text, int imageResourceId) {
this.text = text;
this.imageResourceId = imageResourceId;
}
}
static class ViewHolder {
TextView textView;
ImageView imageView;
}
public class MyAdapter extends ArrayAdapter<bindData> {
private LayoutInflater inflater;
private int layoutId;
public MyAdapter(Context context, int layoutId, List<bindData> objects) {
super(context, 0, objects);
this.inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.layoutId = layoutId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = inflater.inflate(layoutId, parent, false);
holder = new ViewHolder();
holder.textView = (TextView) convertView
.findViewById(R.id.textview);
holder.imageView = (ImageView) convertView
.findViewById(R.id.imageview);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if(!isEnabled(position))
convertView.setBackgroundColor(Color.BLACK);
else {
bindData data = getItem(position);
holder.textView.setText(data.text);
holder.imageView.setImageResource(data.imageResourceId);
}
return convertView;
}
@Override
public boolean isEnabled(int position) {
return !(getItem(position).text.startsWith("-"));
}
}
}
0 件のコメント:
コメントを投稿