OnItemClickListener使用ArrayAdapter的ListView控件 [英] OnItemClickListener using ArrayAdapter for ListView

查看:305
本文介绍了OnItemClickListener使用ArrayAdapter的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:机器人=htt​​p://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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆