【问题标题】:On Item Click for List View在项目上单击以查看列表视图
【发布时间】:2012-09-26 05:36:49
【问题描述】:

我在线性布局中有一个列表视图和一个按钮。我无法扩展 ListActivity(使用 Onlistitemclick),但我必须在列表视图中选择一个项目,这会打开另一个视图,我必须在其中填写 SQLite DB 的详细信息。

假设数据库正常工作,为以下代码实现此功能的最佳方法是什么?我是初学者。欢迎所有与方法和代码相关的建议。

提前致谢,

public class Contacts extends Activity implements OnClickListener {
    int NewContact_Request_Code = 1;
    Button newcontact;
    ListView listview;
    public static final String LOG_TAG = "Contacts";
    int mInt = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.contactview);
        // Set the content to contactview.xml

        // newcontact = NEW CONTACT button
        // listview = MyList List View
        newcontact = (Button) findViewById(R.id.baddcontact);
        listview = (ListView) findViewById(R.id.mylist);

        // Make a New Database
        DBContact info = new DBContact(this);
        // Open , get Information from database and close it
        info.open();
        String[] data = info.queryAll();
        info.close();
        // listview = getListView();
        listview.setTextFilterEnabled(true);
        // Display the names
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(Contacts.this, android.R.layout.simple_list_item_1, data);
         listview.setAdapter(adapter);
        newcontact.setOnClickListener(this);

    }

    // @Override
    // protected void onListItemClick(ListView l, View v, int position, long id)
    // {
    // // TODO Auto-generated method stub
    // super.onListItemClick(l, v, position, id);
    // Intent viewintent = new Intent(Contacts.this, ViewContact.class);
    // String item = (String) getListAdapter().getItem(position);
    // viewintent.putExtra("name_clicked", item);
    // startActivity(viewintent);
    //
    // }



    public void onClick(View v) {
        // TODO Auto-generated method stub
        Intent newintent = new Intent(Contacts.this, AddNewContact.class);
        // start actiivity for result - to get the name of the new contact
        startActivityForResult(newintent, 0);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        // pass the value of the string via cursor and update the list
    }

}

【问题讨论】:

    标签: android android-listview


    【解决方案1】:

    您可以将 OnItemClickListener 设置为您的ListView,如下所示

    listview.setOnItemClickListener(new OnItemClickListener() {
    
      public void onItemClick(AdapterView adapterView, View view, int position, long id) {
    
            //Do some more stuff here and launch new activity
    
      }
    });
    

    【讨论】:

    • 真的很抱歉,我几周前一直在做android。你能解释一下吗??
    • @user1693503 我将解释什么。你想知道如何处理那个吗?
    • 如果可以的话会有很大帮助。复制和粘贴代码没有意义。我对编程很陌生,也没有软件背景。我的列表视图是名称列表。单击其中一个时,我想将该名称参数传递给另一个类。这是什么?我知道如何使用意图并通过意图发送数据
    • @user1693503 是的。就像这样String data = adapterView.getItemAtPosition(position).toString() 在字符串数据中将提供您选择的项目。得到这个之后,只需将此字符串传递到您想要的任何地方。但是,在onItemClick 内执行此操作
    • 感谢您的宝贵时间和帮助
    【解决方案2】:

    您可以在其上明确设置onItemClickListener,如下所示:

    listview.setOnItemClickListener(listener);
    

    其中listenerAdapterView.OnItemClickListener

    【讨论】:

    • 真的很抱歉,我几周前一直在做android。你能解释一下吗??
    • ListView 有许多“项目”(每一行),你想知道什么时候点击了任何一个项目,不是吗?因此,您在ListView 上设置了一个“侦听器”,每当单击项目时都会通知该侦听器。这样一个可以使用的预定义监听器类是AdapterView.OnItemClickListener。有关实现这一点的简单方法,请参阅下面 SpK 的答案。
    • 感谢您的宝贵时间和帮助
    【解决方案3】:

    使用OnItemClickListener() 进行列表视图无需从ListActivity 扩展此活动

    listview.setOnItemClickListener(new OnItemClickListener() {
       @Override
       public void onItemClick(AdapterView<?> arg0, View v, int arg2, long arg3) {          
    
       }
    });
    

    【讨论】:

    • 真的很抱歉,我几周前一直在做android。你能解释一下吗??
    • 只需将此代码用于列表视图 onItemClick,然后使用意图导航到另一个类..
    • 感谢您的宝贵时间和帮助
    【解决方案4】:
    private final ListView.OnItemClickListener ListClick = new OnItemClickListener() {
        public void onItemClick(AdapterView parent, View view, int position, long id) {
            // your action
        }
    };
    

    这样设置

    listview.setOnItemClickListener(ListClick);
    

    【讨论】:

    • 真的很抱歉,我几周前一直在做android。你能解释一下吗??
    • 感谢您的宝贵时间和帮助
    • 我想你已经得到了答案。你还有很长的路要走。祝你好运。
    • 是的。又遇到了一个stackoverflow.com/questions/12596639/emulator-freezing,看看能不能帮上忙
    猜你喜欢
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多