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);
}