我已經寫了一個程序,顯示一個微調,但我想在同一個活動內顯示一個列表視圖,當我選擇任何項目的微調,我也寫了自定義適配器的代碼顯示列表視圖中的項目和列表視圖row有6個textviews,其中的所有數據來自strings.xml文件中定義的String-array,所以需要一些幫助如何在使用onitemselected偵聽器單擊微調項目時顯示listview?
Result_Date.java其中有一個微調框和資源,不知道在「onitemselected」方法內部調用什麼
public class Result_Date extends Activity {
ImageView iv;
String[] years = { "Select year", "2000", "2001", "2002", "2003", "2004",
"2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012",
"2013", "2014" };
ArrayAdapter<String> adapter;
ListView lv;
String[] name;
String[] mobile;
String[] gender;
String[] age;
String[] disease;
String[] day;
String[] month;
String[] year;
int[] images = { R.drawable.photo_bg, R.drawable.photo_bg,
R.drawable.photo_bg, R.drawable.photo_bg, R.drawable.photo_bg,
R.drawable.photo_bg, R.drawable.photo_bg, R.drawable.photo_bg };
Spinner spinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.result_list_year);
spinner = (Spinner) findViewById(R.id.btnShowYear);
iv = (ImageView) findViewById(R.id.imgBackReuslt);
adapter = new ArrayAdapter<String>(getBaseContext(),
R.layout.spinner_item, R.id.textView1, years) {
@Override
//this method is used to hide the default text "Select Year" which repeats twice
public View getDropDownView(int position, View convertView,
ViewGroup parent) {
View v = null;
if (position == 0) {
TextView tv = new TextView(getContext());
tv.setHeight(0);
tv.setVisibility(View.GONE);
v = tv;
} else {
v = super.getDropDownView(position, null, parent);
}
parent.setVerticalScrollBarEnabled(false);
return v;
}
};
adapter.setDropDownViewResource(R.layout.spinner_item);
spinner.setAdapter(adapter);
Resources res = getResources();
name = res.getStringArray(R.array.Name);
mobile = res.getStringArray(R.array.Mobile);
gender = res.getStringArray(R.array.Gender);
age = res.getStringArray(R.array.Age);
disease = res.getStringArray(R.array.DiagnosisName);
day = res.getStringArray(R.array.day_array);
month = res.getStringArray(R.array.month_year);
year = res.getStringArray(R.array.year_array);
lv = (ListView) findViewById(R.id.lstShowYear);
MyAdapter adapter = new MyAdapter(getBaseContext(), name, mobile,
gender, age, images, day, month, year, disease);
lv.setAdapter(adapter);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
}
public void onClick(View v) {
super.onBackPressed();
finish();
}
我CustomAdapter MyAdapter.java
public class MyAdapter extends ArrayAdapter<String> {
Context context;
int[] images;
String[] namearray;
String[] mobilearray;
String[] genderarray;
String[] agearray;
String[] diseasearray;
String[] dayarray;
String[] montharray;
String[] yeararray;
public MyAdapter(Context c, String[] name, String[] mobile,
String[] gender, String[] age, int[] img, String[] disease,
String[] day, String[] month, String[] year) {
super(c, R.layout.row_layout, R.id.textView1, name);
// TODO Auto-generated constructor stub
this.context = c;
this.namearray = name;
this.mobilearray = mobile;
this.genderarray = gender;
this.agearray = age;
this.diseasearray = disease;
this.dayarray = day;
this.montharray = month;
this.yeararray = year;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ListView lv;
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.row_layout, parent, false);
ImageView image = (ImageView) row.findViewById(R.id.imgView);
TextView text1 = (TextView) row.findViewById(R.id.txtName);
TextView text2 = (TextView) row.findViewById(R.id.txtMobile);
TextView text3 = (TextView) row.findViewById(R.id.txtGender);
TextView text4 = (TextView) row.findViewById(R.id.txtAge);
TextView text5 = (TextView) row.findViewById(R.id.txtDesease);
TextView text6 = (TextView) row.findViewById(R.id.txtDate);
lv = (ListView) row.findViewById(R.id.listView1);
image.setImageResource(images[position]);
text1.setText(namearray[position]);
text2.setText(mobilearray[position]);
text3.setText(genderarray[position]);
text4.setText(agearray[position]);
text5.setText(diseasearray[position]);
text6.setText(dayarray[position]);
text6.setText(montharray[position]);
text6.setText(yeararray[position]);
return row;
}
}
我是否需要寫自定義資源的obj直到設置onitemselected方法裏面的適配器的代碼? 任何建議,歡迎
先生我試過以上,但我得到空指針異常,存儲== null – 2014-11-04 07:06:36
上面只是一個想法,重點是你刷新適配器在微調項目更改事件。你的意思是「存儲== null」?你能告訴我新的代碼嗎? – labreu 2014-11-04 11:54:51
public void refreshList(String years){ name = getResources()。getStringArray(R.array.Name); mobile = getResources()。getStringArray(R.array.Mobile); gender = getResources()。getStringArray(R.array.Gender); age = getResources()。getStringArray(R.array.Age); disease = getResources()。getStringArray(R.array.DiagnosisName); year = getResources()。getStringArray(R.array.year_array); this.notifyDataSetChanged(); } }我把它從我的onitemselected方法調用adapter.refreshList(年[位置]) 我知道我做錯了那就是爲什麼錯誤,請指導我 – 2014-11-04 13:03:37