OnItemClickListener使用ArrayAdapter的ListView控件 [英] OnItemClickListener using ArrayAdapter for ListView
问题描述
我想有一个OnItemClickListener为一个ListView创建使用ArrayAdapter
这是在code我用它来创建它:
名单,其中,评论>值= datasource.some_search(日,11);
ArrayAdapter<注释>适配器=新的ArrayAdapter<注释>(这一点,
android.R.layout.simple_list_item_1,价值观);
setListAdapter(适配器);
我如何实施onItemClickListener?
谢谢!
编辑:我使用我的ArrayAdapter和ListView对象的字符串
编辑2:更多code:
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main);
数据源=新CommentsDataSource(本);
datasource.open();
//检查数据库被填充,如果不符合,txtToDb填充();
如果(!datasource.isPopulated()){
//不填充数据库是如此的资产在这里复制
尝试 {
txtToDb();
Log.i(数据库,没有填充);
}赶上(IOException异常E){
// TODO自动生成的catch块
e.printStackTrace();
Log.i(数据库,不填充为:txtToDb();失败);
}
} 其他 {
Log.i(数据库,人口较少);
}
//笏显示在屏幕上:
名单<注释>值= datasource.search(日,11);
//使用SimpleCursorAdapter来显示
//在ListView元素
ArrayAdapter<注释>适配器=新的ArrayAdapter<注释>(这一点,
android.R.layout.simple_list_item_1,价值观);
setListAdapter(适配器);
}
编辑3:XML:
< XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:方向=垂直>
<的LinearLayout
机器人:ID =@ + ID /组
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT>
<按钮
机器人:ID =@ + ID /加
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:文本=新增
机器人:的onClick =的onClick/>
<按钮
机器人:ID =@ + ID /删除
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:文本=删除第一
机器人:的onClick =的onClick/>
< / LinearLayout中>
<的ListView
机器人:ID =@机器人:ID /列表
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:文本=@字符串/你好/>
< / LinearLayout中>
使用OnItemClickListener
的ListView LV = getListView();
lv.setOnItemClickListener(新OnItemClickListener()
{
@覆盖
公共无效onItemClick(适配器视图<>适配器,视图V,INT位置,
长ARG3)
{
字符串值=(字符串)adapter.getItemAtPosition(位置);
//假设字符串,如果你想获得关于点击列表项的值
//你打算做点击列表视图排什么
}
});
当你点击一排监听器被触发。所以,你 setOnClickListener
在ListView和使用annonymous内部类 OnItemClickListener
。
您还覆盖 onItemClick
。第一个参数是一个适配器。第二个参数是视图。第三个参数是该位置(列表视图项指标)。
使用您获得该项目的位置。
编辑:从您的意见我想你需要设置器O列表视图
因此,假如你的活动来延长 ListActivtiy
setListAdapter(适配器);
或者,如果你的活动类扩展活动
的ListView LV =(ListView控件)findViewById(R.id.listview1);
//初始化适配器
lv.setAdapter(适配器);
I want to have an OnItemClickListener for a ListView I create using an ArrayAdapter
This is the code I use to create it:
List<Comment> values = datasource.some_search("Wednesday","11");
ArrayAdapter<Comment> adapter = new ArrayAdapter<Comment>(this,
android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
How do I implement onItemClickListener?
Thanks!
EDIT: I am using in my ArrayAdapter and ListView a string of objects.
EDIT 2: More code:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
datasource = new CommentsDataSource(this);
datasource.open();
//check if database is populated if NOT, populate with txtToDb();
if (!datasource.isPopulated()) {
// Database is not populated so copy it from assets here
try {
txtToDb();
Log.i("Database", "Was not Populated");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.i("Database", "Was not populated: txtToDb(); failed");
}
} else {
Log.i("Database", "Populated");
}
//wat to show on screen:
List<Comment> values = datasource.search("Wednesday","11");
// Use the SimpleCursorAdapter to show the
// elements in a ListView
ArrayAdapter<Comment> adapter = new ArrayAdapter<Comment>(this,
android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
}
EDIT 3: XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/group"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button
android:id="@+id/add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Add New"
android:onClick="onClick"/>
<Button
android:id="@+id/delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Delete First"
android:onClick="onClick"/>
</LinearLayout>
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
</LinearLayout>
Use OnItemClickListener
ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> adapter, View v, int position,
long arg3)
{
String value = (String)adapter.getItemAtPosition(position);
// assuming string and if you want to get the value on click of list item
// do what you intend to do on click of listview row
}
});
When you click on a row a listener is fired. So you setOnClickListener
on the listview and use the annonymous inner class OnItemClickListener
.
You also override onItemClick
. The first param is a adapter. Second param is the view. third param is the position ( index of listview items).
Using the position you get the item .
Edit : From your comments i assume you need to set the adapter o listview
So assuming your activity extends ListActivtiy
setListAdapter(adapter);
Or if your activity class extends Activity
ListView lv = (ListView) findViewById(R.id.listview1);
//initialize adapter
lv.setAdapter(adapter);
这篇关于OnItemClickListener使用ArrayAdapter的ListView控件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!