[英]How to make items clickable in list view?
我一直在努力尋找解決方案,但收效甚微。 我必須顯示一個包含項目列表的彈出窗口 。 我能夠顯示窗口,但單擊列表視圖中的項目時未調用onitemclicklistener 。 任何有關此問題的幫助將不勝感激。
謝謝
EDIT1:
public class PopUpWindowActivity extends Activity {
/** Called when the activity is first created. */
String[] countries = new String[] {
"India", "USA", "Canada"
};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout ll = new LinearLayout(this);
ListView lv = new ListView(this);
lv.setAdapter(new ArrayAdapter < String > (this, android.R.layout.simple_list_item_1, countries));
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView <? > arg0, View arg1, int arg2,
long arg3) {
Log.v("clicked", (String)((TextView) arg1).getText());
}
});
ll.addView(lv);
setContentView(ll);
}
}
在上面的代碼中,我嘗試創建一個布局,其中我添加了一個列表視圖。 這使列表視圖不再可單擊。 我必須這樣做因為,我正在嘗試實現一個彈出窗口,其中應該有多個項目以及列表視圖。
列表中的列表和項目是否設置為可點擊? 無論是以編程方式......
ListView myList = (ListView) findViewById(R.id.list_view_id);
myList.setClickable(true);
或者在XML中......
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:clickable="true">
...
</ListView>
我假設你做到了,但有時我們甚至想念明顯的:)
編輯:
從Android教程這里是如何以編程方式設置onItemClickListener。
ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// When clicked perform some action...
}
});
編輯2:
這是我的XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/list" />
</LinearLayout>
這是我的代碼
public class HelloAndroidActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String[] countries = getResources().getStringArray(R.array.countries_array);
ListView lv = (ListView) findViewById(R.id.list);
lv.setAdapter(new ArrayAdapter < String > (this, R.layout.list_item, countries));
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView <? > arg0, View view, int position, long id) {
// When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
Toast.LENGTH_SHORT).show();
}
});
}
}
ListView myList;
myList = (ListView)findViewById(list_vew_id_in_xml)
myList.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
//Toast.makeText(BritishCouncilActivity.this, "" + position, 2).show();
}
});
針對任何listview項插入此屬性
android:onClick="buttonClicked"
然后在你的代碼中
public void buttonClicked(View view)
{
//Do what you want to do..
}
編輯答案
申請此樣本請為您工作我已經測試過此代碼
//ListviewActivity.java
package com.anl.lk;
public class ListviewActivity extends ListActivity {
static final String[] COUNTRIES = new String[] {
"Afghanistan", "Albania", "Algeria", "American Samoa",
"Andorra", "Angola", "Anguilla", "Antarctica",
"Antigua and Barbuda", "Argentina", "Armenia", "Aruba",
"Australia", "Austria", "Azerbaijan", "Bahrain",
"Bangladesh", "Barbados", "Belarus", "Belgium", "Belize",
"Benin", "Bermuda", "Bhutan", "Bolivia",
"Bosnia and Herzegovina", "Botswana", "Bouvet Island",
"Brazil", "British Indian Ocean Territory"
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter < String > (this,
android.R.layout.simple_list_item_1, COUNTRIES));
getListView().setTextFilterEnabled(true);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
new AlertDialog.Builder(this)
.setTitle("Hello")
.setMessage("from " + getListView().getItemAtPosition(position))
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {}
})
.show();
Toast.makeText(ListviewActivity.this,
"ListView: " + l.toString() + "\n" +
"View: " + v.toString() + "\n" +
"position: " + String.valueOf(position) + "\n" +
"id: " + String.valueOf(id),
Toast.LENGTH_LONG).show();
}
}
//第一頁
package com.anl.lk;
public class FirstPage extends Activity {
@override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button b = (Button) findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent sam = new Intent(FirstPage.this, ListviewActivity.class);
startActivity(sam);
}
});
}
}
//清單文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.anl.lk"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".FirstPage" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ListviewActivity" android:theme="@android:style/Theme.Dialog"></activity>
</application>
請使用此代碼,它有您的解決方案
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.