是不是Map<String, Object> map;来装载数据,里面的每条item都得一样啊?我想让第一条有spinner控件,第二条一般的list item,单击后确认上面spinner的修改。但是我想把第二条修改成显示OK都不行图是要实现的效果:import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;public class MainActivity extends Activity {
private ListView mListView;
private List<Map<String, Object>> data;
private ArrayAdapter<String> adapter;
private String[] m;
CustomListAdapter listAdapter; @Override
public void onCreate(Bundle savedInstanceStated) {
super.onCreate(savedInstanceStated);
setContentView(R.layout.list_view);
m = this.getResources().getStringArray(R.array.switcher);
data = getData();
// adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, m);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, m);
mListView = (ListView) findViewById(R.id.list_view_id); listAdapter = new CustomListAdapter(this);
mListView.setAdapter(listAdapter); mListView.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
// System.out.println("FFFFFFFFFF     "+ mListView.getSelectedItemPosition());
int pos = mListView.getSelectedItemPosition(); if (pos >= 0) {
int i = 0; if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_LEFT:
i = (Integer) data.get(pos).get("sss");
i = i - 1;
if (i < 0) i = m.length - 1;
data.get(pos).put("sss", i); listAdapter.notifyDataSetChanged(); return true; case KeyEvent.KEYCODE_DPAD_RIGHT:
i = (Integer) data.get(pos).get("sss");
i = i + 1;
if (i >= m.length) i = 0;
data.get(pos).put("sss", i);
// System.out.println("Right i = "+i);
listAdapter.notifyDataSetChanged();
return true;
}
}
}
return false;
}
});
}

private List<Map<String, Object>> getData() {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map;
map = new HashMap<String, Object>();
map.put("menuText", getResources().getString(R.string.STR_SERVICE_LOCK));
map.put("leftOfImage", R.drawable.gray_l);
map.put("rightOfImage", R.drawable.gray_r);
map.put("sss", 0);
list.add(map);

map = new HashMap<String, Object>();
map.put("menuText", "Change PIN Code");
// map.put("leftOfImage", R.drawable.gray_l);
// map.put("rightOfImage",R.drawable.gray_r);
map.put("leftOfImage", 0);
map.put("rightOfImage",0);
map.put("sss",0);
list.add(map);

return list;
} class CustomListAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private Context mContext = null;
public CustomListAdapter(Context context) {
mContext = context;
mInflater = LayoutInflater.from(mContext);
} public Object getItem(int arg0) {
// TODO Auto-generated method stub
return arg0;
} public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
} public int getCount() {
// TODO Auto-generated method stub
return data.size();
} @TargetApi(11)
public View getView(int position, View convertView, android.view.ViewGroup parent) {
final ViewHolder viewHolder;
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = mInflater.inflate(R.layout.item_custom, null);

viewHolder.leftOfImage= (ImageView) convertView.findViewById(R.id.menu_image_id);
                viewHolder.rightOfImage= (ImageView) convertView.findViewById(R.id.right_image_id);
                viewHolder.menuText = (TextView) convertView.findViewById(R.id.menu_text_id);
// viewHolder.choiceText = (TextView) convertView.findViewById(R.id.choice_text_id);
                viewHolder.mSpinner = (Spinner) convertView.findViewById(R.id.menu_spinner_id);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.menuText.setText((String) data.get(position).get("menuText"));
            viewHolder.leftOfImage.setBackgroundResource((Integer) data.get(position).get("leftOfImage"));
            viewHolder.rightOfImage.setBackgroundResource((Integer) data.get(position).get("rightOfImage"));
            
            int i =  (Integer) data.get(position).get("sss");
            
// System.out.println("i---> "+i);
viewHolder.mSpinner.setAdapter(adapter);
// viewHolder.mSpinner.setVisibility(View.VISIBLE);
// viewHolder.mSpinner.setAlpha(0);
viewHolder.mSpinner.setSelection(i);
return convertView;
} public class ViewHolder {
public TextView menuText;
public ImageView leftOfImage;
public Spinner mSpinner;
// public TextView selectText;
public ImageView rightOfImage;
}

}
}