android監聽listview
A. android 如果listview太多,怎麼給每一項item都添加監聽器
您現在實現了把所有的activity的提示語都依次放到ListView組件當中了吧。
如果這一步還沒有實現,而且Activity數目較多,可以使用ArrayAdapter或者SimpleAdapter完成。前者相對善於普通的文本提示,後者可以使得每個ListView單元的內容更豐富。
Activity當然可以使用數組來實現,比如Activity[] activity=new Activity[]{};。或者你單擊不同的ListView都跳轉到一個Activity,但是為這個Activity載入不同的布局文件。再或者你可以使用標簽的形式,可以考慮TabHost或者ActivityGroup再或者Fragment。
B. android編程中一個界面怎麼編寫兩個listview,同時設置監聽
你想放幾個就放幾個,這個事沒有問題的。
首先:
你在布局文件裡面添加兩個listview,你可以用layout_weight 這個屬性進行控制,比如都給1,然後水平和數值都是fillparent的那麼這兩個listview就是上下兩個
其次:你在activity裡面進行實例化這兩個listview對象。然後同時設置統一個監聽器,因為每個View 都有一個getId()方法,所以可以使用這個方法得到view的id,通過switch進行判斷是哪個view,然後做出不同相應!
C. android中,給ListView中的item加監聽時,setOnItemClickListener,與setOnItemSelected的區別是
setOnItemClickListener是單擊Listview 列表中的某一項觸發這個方法,SetOnItemSelected表示滑動滑鼠的滾輪時選中哪一項觸發這個方法
D. Android ListView怎麼添加點擊監聽
你既然繼承自ListActivity,重載OnListItemClick函數即可
* @param l The ListView where the click happened
* @param v The view that was clicked within the ListView
* @param position The position of the view in the list
* @param id The row id of the item that was clicked
*/
protected void onListItemClick(ListView l, View v, int position, long id) {
}
id就是點擊的位置
E. android listview 裡面view的監聽問題
大概要實現這個兩個功能:
1、監聽listview的itemclick(樓主實現辦法:在activity監聽)
2、在myadapter(繼承baseadapter)裡面監聽view(imagebutton和button的onclick事件) (樓主實現辦法:getview裡面監聽mViewHolder的兩個按鈕的onclick)
運行效果:
1、如果listview有1條數據。運行結果毫無問題。都能正確監聽。
2、如果listview有多條數據,第1條數據的imgbutton和button監聽有問題。(比如點擊5次imgbutton,這時不會觸發imgbutton的onclick的。再緊接著點擊第2條數據的itemclick,奇特事件發生了,先觸發itemclick事件,然後觸發5次imgbutton的onclick事件。)
到這里,樓主就不懂了。(樓主就15個財富值。。。高手別吝嗇吧。求指導)
F. android 在一個listview中怎麼給每一項的button監聽點擊事件
首先你說的東西是一個誤區,不是每一項button而是list裡面的item,其次,將item進行點擊監聽,我寫一個點擊監聽的方法
mylistview = (ListView)findViewById(R.id.listview);
list.add("LinearLayout");
list.add("AbsoluteLayout");
list.add("TableLayout");
list.add("RelativeLayout");
list.add("FrameLayout");
ArrayAdapter<String> myArrayAdapter = new ArrayAdapter<String>
(this,android.R.layout.simple_list_item_1,list);
mylistview.setAdapter(myArrayAdapter);
mylistview.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
if(list.get(arg2).equals("LinearLayout"))
{
Intent intent = new Intent("com.wps.android.LINEARLAYOUT");
startActivity(intent);
}
if(list.get(arg2).equals("AbsoluteLayout"))
{
Intent intent = new Intent("com.wps.android.ABSOLUTELAYOUT");
startActivity(intent);
}
if(list.get(arg2).equals("TableLayout"))
{
Intent intent = new Intent("com.wps.android.TABLELAYOUT");
startActivity(intent);
}
if(list.get(arg2).equals("RelativeLayout"))
{
Intent intent = new Intent("com.wps.android.RELATIVELAYOUT");
startActivity(intent);
}
if(list.get(arg2).equals("FrameLayout"))
{
Intent intent = new Intent("com.wps.android.FRAMELAYOUT");
startActivity(intent);
}
}
});
G. 怎麼給listview item 設置監聽事件
給Listview裡面Item里的每一個控制項怎麼設定點擊事件
adpter用的是繼承的baseadapter,給整個listview
上的
Item
設置點擊事件就用listview.setOnItemClickListener(listener)就可以,
下面介紹
如果
給
I
tem裡面某一
控制項設置點擊事件。方法是重寫
Adapter。
ListView工作原理(針對下面代碼):
1.
給ListView設置數據適配器,此處程序是自己重寫的Adapter,創建Adapter 的時候主要做下面的工作:
(1)把ListView需要顯示的數據傳給Adapter
(2)把ListView顯示Item的界面傳給Adapter
(3)把上下文對象傳給Adapter,主要用來得到LayoutInflater對象來得到Item界面
2. 給ListView設置當點擊Item對象的時候執行的操作,此處要實現給Item中的各項也就是該程序的三個TextView設置監聽器,也就是調用Adapter中的getView函數。
3. getView函數實現的操作是:第一要將Item要顯示的數據顯示,然後設置監聽器,為監聽器設置操作。
代碼如下:
ListView中Item的布局文件
activity_my_goods_listview.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id = "@+id/goodBarcode"
android:layout_width="150dip"
android:layout_height="wrap_content"
android:textColor="#000"
android:textSize="16sp"
android:paddingTop="10dip"
android:clickable="true"//設置可點擊
/>
<TextView
android:id="@+id/goodName"
android:layout_width="150dip"
android:layout_height="wrap_content"
android:textColor="#000"
android:textSize="16sp"
android:paddingTop="10dip"
android:clickable="true"
/>
<TextView
android:id="@+id/goodProvider"
android:layout_width="150dip"
android:layout_height="wrap_content"
android:textColor="#000"
android:textSize="16sp"
android:paddingTop="10dip"
android:clickable="true"
/>
</LinearLayout>
ListView控制項所在的布局文件
activity_my_goods.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffffff"
android:gravity="center"
android:orientation="vertical">
<LinearLayout //標題
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingLeft="15px"
android:layout_marginLeft="5dip"
android:layout_marginTop="93dip">
<TextView
android:layout_width="150dip"
android:layout_height="wrap_content"
android:textColor="#000"
android:textSize="16sp"
android:text="商品條碼"
android:paddingTop="10dip"
/>
<TextView
android:layout_width="150dip"
android:layout_height="wrap_content"
android:textColor="#000"
android:textSize="16sp"
android:text="商品名稱"
android:paddingTop="10dip"
/>
<TextView
android:layout_width="150dip"
android:layout_height="wrap_content"
android:textColor="#000"
android:textSize="16sp"
android:text="供應商"
android:paddingTop="10dip"
/>
</LinearLayout>
<ScrollView
android:id="@+id/feedbacklayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="103dip"
android:paddingTop="20.0dip" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="20px">
<ListView
android:id="@+id/goodsinfoListView"
android:layout_width="wrap_content"
android:layout_height="354dp"
android:layout_marginBottom="5.0dip"
android:layout_marginRight="5.0dip"
android:textColor="#000"
android:textSize="16.0dip">
</ListView>
</ScrollView>
</RelativeLayout>
H. Android 懸浮窗形式顯示的listview,設置setOnItemClickListener無法監聽到
這個是焦點的問題,我曾經做懸浮窗的EditText的時候碰到過這個問題,需要讓你的懸浮窗取得焦點才可以,否則的話看起來有點擊的反應,但是無法響應焦點的事件。關鍵代碼如下:
wmParams = new WindowManager.LayoutParams();
//設置浮動窗口不可聚焦(實現操作除浮動窗口外的其他可見窗口的操作)
wmParams.flags = LayoutParams.FLAG_ALT_FOCUSABLE_IM|LayoutParams.FLAG_NOT_FOCUSABLE;
這樣設置以後浮窗沒有焦點,不能響應浮窗裡面的部分響應事件。
設置成: wmParams.flags = LayoutParams.FLAG_ALT_FOCUSABLE_IM&LayoutParams.FLAG_NOT_FOCUSABLE;
這樣以後,可以響應浮窗裡面的點擊事件,但是點擊浮窗外面的時候,會出現無法點擊。
你試試
I. 如何監聽安卓的explandlistview打開關閉的監聽
android button控制項目前主要有如下幾種監聽方式:
1.一個button控制項對應一個監聽:
[java] view plainprint?
01. Button buttontest;
02. buttontest = (Button) findViewById(R.id.button1);
03. buttontest.setOnClickListener(new View.OnClickListener() {
04.
05. @Override
06. public void onClick(View v) {
07. // TODO Auto-generated method stub
08. Log.i("TEST", "button onClick");
09. }
10.});
Button buttontest;
buttontest = (Button) findViewById(R.id.button1);
buttontest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("TEST", "button onClick");
}
});2.多個button對應一個監聽1:
[java] view plainprint?
01.start = (Button) findViewById(R.id.button1);
02.stop = (Button) findViewById(R.id.button2);
03.start.setOnClickListener(mylistener );
04.stop.setOnClickListener(mylistener );
05.View.OnClickListener mylistener = new View.OnClickListener() {
06.
07. @Override
08. public void onClick(View v) {
09. switch (v.getId()) {
10. case R.id.button1:
11. Log.d(TAG, "Start to recorder video\n");
12. start_recorde();
13. break;
14. case R.id.button2:
15. Log.d(TAG, "Stop to recorder video\n");
16. stop_recorde();
17. break;
18. default:
19. break;
20. }
21. }
22. };
start = (Button) findViewById(R.id.button1);
stop = (Button) findViewById(R.id.button2);
start.setOnClickListener(mylistener );
stop.setOnClickListener(mylistener );
View.OnClickListener mylistener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
Log.d(TAG, "Start to recorder video\n");
start_recorde();
break;
case R.id.button2:
Log.d(TAG, "Stop to recorder video\n");
stop_recorde();
break;
default:
break;
}
}
};3.多個button對應一個監聽2:
[java] view plainprint?
01.public class MainActivity extends Activity implements View.OnClickListener{
02. //界面元素
03. private Button start;
04. private Button stop;
05.
06. @Override
07. public void onCreate(Bundle savedInstanceState) {
08. super.onCreate(savedInstanceState);
09. setContentView(R.layout.activity_main);
10.
11. start = (Button) findViewById(R.id.button1);
12. stop = (Button) findViewById(R.id.button2);
13. start.setOnClickListener(this);
14. stop.setOnClickListener(this);
15. }
16.
17. @Override
18. public boolean onCreateOptionsMenu(Menu menu) {
19. getMenuInflater().inflate(R.menu.activity_main, menu);
20. return true;
21. }
22.
23. @Override
24. public void onClick(View v) {
25. switch (v.getId()) {
26. case R.id.button1:
27. Log.d(TAG, "Start to recorder video\n");
28. break;
29. case R.id.button2:
30. Log.d(TAG, "Stop to recorder video\n");
31. break;
32. default:
33. break;
34. }
35. }
36.
37.}
public class MainActivity extends Activity implements View.OnClickListener{
//界面元素
private Button start;
private Button stop;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start = (Button) findViewById(R.id.button1);
stop = (Button) findViewById(R.id.button2);
start.setOnClickListener(this);
stop.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
Log.d(TAG, "Start to recorder video\n");
break;
case R.id.button2:
Log.d(TAG, "Stop to recorder video\n");
break;
default:
break;
}
}
}4.xml中綁定監聽:
[html] view plainprint?
01.<Button
02.android:id="@+id/button1"
03.android:layout_height="wrap_content"
04.android:layout_width="wrap_content"
05.android:onClick="mybuttonlistener">
06.</Button>
<Button
android:id="@+id/button1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:onClick="mybuttonlistener">
</Button>對應java代碼如下:
[java] view plainprint?
01.Button btn = (Button) findViewById(R.id.button1);
02.public void mybuttonlistener(View target){
03. //do something5
04.}
Button btn = (Button) findViewById(R.id.button1);
public void mybuttonlistener(View target){
//do something5
}
從個人角度來講,不推薦使用第四種實現方式。
J. 在android中listview組件如何載入監聽(就是按當前的ListView跳到相應的界面,並獲得該listView 的ID)
這個listview關鍵是看你的adapter是怎麼導入的,類似的有個例子你可以參考: listView.setOnItemClickListener(new OnItemClickListener()
{ @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{ 這裡面可以弄switch(position)或者別的
case(1)
{就跳轉到另一個頁面
}
}
});
如果沒有用adapter
直接寫方法就行,
void onListItemClick(ListView l, View v, int position, long id) //這個是已經出了列表,點擊列表之中的成員時,會有一個toast提示出來
{
selectedItem = position;
Toast.makeText(EX04_20.this,
mString[selectedItem],//因為是click事件,所以直接用數組,索引值就是參數中的position
Toast.LENGTH_SHORT).show();
super.onListItemClick(l, v, position, id);
}