要实现一个电视菜单,里面有四行,每一行有两个TextView和一个ProgressBar,
是不是只能使用自定义Adapter的形式来解决? 貌似不能用SimpleAdapter。
下面是具体代码,显示已经显示出来了,焦点移动也没问题,但是就是没办法做到一开始的时候就设置某一个item为焦点,求指教怎么做到这点? 另外, 设置selector也无效,不知道为什么。
public class MyAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private List<Map<String, Object>> mData;
private ViewHolder holder;
private TextView tView;
public MyAdapter(Context context, List<Map<String, Object>> data) {
this.mInflater = LayoutInflater.from(context);
this.mData = data;
}
@Override
public int getCount() {
return mData.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (mData.get(position).get("type") == "text only") {
if(convertView == null){
convertView = mInflater.inflate(R.layout.text,null);
tView = (TextView) convertView.findViewById(R.id.tvMain);
convertView.setTag(tView);
}else{
tView = (TextView) convertView.getTag();
}
//赋值
tView.setText(mData.get(position).get("title").toString());
} else {
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.pcsettings, null);
holder.setTvTitle((TextView) convertView
.findViewById(R.id.tvTitle));
holder.setPbProgressBar((ProgressBar) convertView
.findViewById(R.id.progressBar));
holder.setTvValue((TextView) convertView
.findViewById(R.id.tvValue));
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
// 给每一行赋值
holder.getTvTitle().setText(
mData.get(position).get("title").toString());
holder.getPbProgressBar().setProgress(
Integer.parseInt(mData.get(position).get("position")
.toString()));
holder.getTvValue().setText(
mData.get(position).get("position").toString());
}
return convertView;
}
}public class PCSettings extends ListActivity {