[英]Clickable Items in listview
我試圖使我的listview項目可點擊; 但無法使其正常運行。 當我單擊某個項目時,它會切換屏幕,但不會切換到所需的屏幕。 這是代碼
private ListView lv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);
lv = (ListView) findViewById(R.id.listView1);
// Instanciating an array list (you don't need to do this, you already have yours)
ArrayList<String> menu_Items = new ArrayList<String>();
menu_Items.add("Fill Treatment Form");
menu_Items.add("View Medical History");
menu_Items.add("View Medication");
menu_Items.add("View Diet");
menu_Items.add("View First Aid");
menu_Items.add("Look Up Map");
menu_Items.add("Account Settings");
// This is the array adapter, it takes the context of the activity as a first // parameter, the type of list view as a second parameter and your array as a third parameter
ArrayAdapter<String> arrayAdapter =
new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, menu_Items);
lv.setAdapter(arrayAdapter);
lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {
Intent i = new Intent(getApplicationContext(), FillTreatmentActivity.class);
startActivity(i);
}
});
lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg1, View view, int position, long id) {
Intent i = new Intent(getApplicationContext(), MedicalHistoryActivity.class);
startActivity(i);
}
});
lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg2, View view, int position, long id) {
Intent i = new Intent(getApplicationContext(), MedicationActivity.class);
startActivity(i);
}
});
lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg3, View view, int position, long id) {
Intent i = new Intent(getApplicationContext(),DietActivity.class);
startActivity(i);
}
});
lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg4, View view, int position, long id) {
Intent i = new Intent(getApplicationContext(),FirstAidActivity.class);
startActivity(i);
}
});
lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg5, View view, int position, long id) {
Intent i = new Intent(getApplicationContext(),MapActivity.class);
startActivity(i);
}
});
lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg6, View view, int position, long id) {
Intent i = new Intent(getApplicationContext(),SettingsActivity.class);
startActivity(i);
}
});
}
當我單擊任何一個列表視圖項時,“帳戶設置活動”將打開。 我是新手,所以請不要判斷我的編碼:)
一個listview只能有一個OnItemClickListener
,因此除最后一個OnItemClickListener
所有東西都將被丟棄。 這就是無論您點擊哪個項目, SettingsActivity
都是開放式的原因。
要解決此問題,請使用一個偵聽器,讓該偵聽器處理不同的選項。
lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg1, View view, int position, long id) {
switch(position) {
case 0:
// start activity 1
break;
case 1:
// start activity 2
break;
case 2:
// start activity 3
break;
// more case statements
}
});
為什么不在listview
的布局中添加android:onClick="myClickMethod"
,然后創建一個具有相同名稱的方法? 在其中,您可以看到完全按下了鞭狀視圖。 另外,listView只有一個onClickListener
;-)
干杯
嘗試向您的點擊監聽器添加switch語句
private ListView lv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);
lv = (ListView) findViewById(R.id.listView1);
// Instanciating an array list (you don't need to do this, you already have yours)
ArrayList<String> menu_Items = new ArrayList<String>();
menu_Items.add("Fill Treatment Form");
menu_Items.add("View Medical History");
menu_Items.add("View Medication");
menu_Items.add("View Diet");
menu_Items.add("View First Aid");
menu_Items.add("Look Up Map");
menu_Items.add("Account Settings");
// This is the array adapter, it takes the context of the activity as a first // parameter, the type of list view as a second parameter and your array as a third parameter
ArrayAdapter<String> arrayAdapter =
new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, menu_Items);
lv.setAdapter(arrayAdapter);
lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {
switch(position){
case 0:
Intent i = new Intent(getApplicationContext(), FillTreatmentActivity.class);
startActivity(i);
break;
case 1:
Intent i = new Intent(getApplicationContext(), MedicalHistoryActivity.class);
startActivity(i);
break;
case 2:
Intent i = new Intent(getApplicationContext(), MedicationActivity.class);
startActivity(i);
break;
case 3:
Intent i = new Intent(getApplicationContext(),DietActivity.class);
startActivity(i);
break;
case 4:
Intent i = new Intent(getApplicationContext(),FirstAidActivity.class);
startActivity(i);
break;
case 5:
Intent i = new Intent(getApplicationContext(),MapActivity.class);
startActivity(i);
break;
case 6:
Intent i = new Intent(getApplicationContext(),SettingsActivity.class);
startActivity(i);
break;
}
}
});
}
這是這樣做的方式; 我做錯了。 感謝您的幫助。 和平/
private ListView lv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);
lv = (ListView) findViewById(R.id.listView1);
// Instanciating an array list (you don't need to do this, you already have yours)
ArrayList<String> menu_Items = new ArrayList<String>();
menu_Items.add("Fill Treatment Form");
menu_Items.add("View Medical History");
menu_Items.add("View Medication");
menu_Items.add("View Diet");
menu_Items.add("View First Aid");
menu_Items.add("Look Up Map");
menu_Items.add("Account Settings");
// This is the array adapter, it takes the context of the activity as a first // parameter, the type of list view as a second parameter and your array as a third parameter
ArrayAdapter<String> arrayAdapter =
new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, menu_Items);
lv.setAdapter(arrayAdapter);
lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {
switch(position){
case 0:
Intent i = new Intent(getApplicationContext(), FillTreatmentActivity.class);
startActivity(i);
break;
case 1:
Intent j = new Intent(getApplicationContext(), MedicalHistoryActivity.class);
startActivity(j);
break;
case 2:
Intent k = new Intent(getApplicationContext(), MedicationActivity.class);
startActivity(k);
break;
case 3:
Intent l = new Intent(getApplicationContext(),DietActivity.class);
startActivity(l);
break;
case 4:
Intent m = new Intent(getApplicationContext(),FirstAidActivity.class);
startActivity(m);
break;
case 5:
Intent n = new Intent(getApplicationContext(),MapActivity.class);
startActivity(n);
break;
case 6:
Intent o = new Intent(getApplicationContext(),SettingsActivity.class);
startActivity(o);
break;
}
}
});
您需要在Listener上創建它將處理所有列表。 像這樣:
lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView arg6, View view, int position, long id) {
swith(position){
case 1:
Intent i = new Intent(getApplicationContext(), FillTreatmentActivity.class);
startActivity(i);
break;
case 2:
...
}
}
});
或者,您可以擴展ArrayAdaptyer類並為每個元素實現單個偵聽器
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.