首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OnItemClickListener / SimpleDateFormat

OnItemClickListener / SimpleDateFormat
EN

Stack Overflow用户
提问于 2015-10-09 10:53:46
回答 1查看 52关注 0票数 0

我正在开发一款即时通讯应用程序,并已将对话列表显示得很好,但我的listview onitemclicklistner却有问题。我希望它检索一个textview (id=lblID),将它转换为一个字符串,然后显示会话列表(以该字符串作为id),并在我的listview中显示它。

  1. 我做得对吗?
  2. 解决了onitemclicklistener中的simplecursoradapter不允许我使用"this“作为上下文,我应该使用什么呢?
  3. 我想使用SimpleDateFormat,我将如何在游标和适配器之间这样做?
  4. 解决了我现在收到了一个错误,没有人能解决这个问题吗?: 10-10 07:45:54.926 24231-24231/?E/AndroidRuntime:致命例外:主要10-1007:45:54.926 24231-24231/?E/AndroidRuntime:进程: com.example.wq.myapp,PID: 24231 10-1007:45:54.926 24231-24231/?E/AndroidRuntime: android.database.sqlite.SQLiteException:近"*":语法错误(代码1):编译时: SELECT * FROM (选择DISTINCT *1作为normalized_date,NULL AS * FROM thread_id= 37,(thread_id =3) UNION *100AS normalized_date,空AS *从pdu左加入pending_msgs ON pdu._id = pending_msgs.msg_id,其中(thread_id = 37和msg_box != 3和(msg_box != 3和(m_type = 128 OR m_type = 132 OR m_type =130))

这是我的代码:

代码语言:javascript
复制
@Override
public void onClick(View v) {

    if (v == btnSMS) {
        // Create Inbox box URI
        Uri inboxURI = Uri.parse("content://mms-sms/conversations");
        // Get Content Resolver object, which will deal with Content Provider
        ContentResolver cr = getContentResolver();
        // Fetch Inbox SMS Message from Built-in Content Provider
        Cursor a = cr.query(inboxURI, new String[] {"*"}, null, null, "normalized_date desc");
        // Attach Cursor with adapter and display in listView
        adapter1 = new SimpleCursorAdapter(this, R.layout.row, a,
                new String[]{ "body", "date", "address","_id"},
                new int[]{ R.id.lblMsg, R.id.lblDate, R.id.lblNumber, R.id.lblID }, 0);
        lvMsg.setAdapter(adapter1);
        lvMsg.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                TextView TVConvID = (TextView)findViewById(R.id.lblID);
                String ConvID = TVConvID.getText().toString();
                Uri ConvURI = Uri.parse("content://mms-sms/conversations/"+ConvID);
                Cursor b = getContentResolver().query(ConvURI, new String[]{"*"}, null, null, "normalized_date desc");
                adapter2 = new SimpleCursorAdapter(getApplicationContext(), R.layout.convrow, b,
                        new String[]{ "body", "date", "address" },
                        new int[]{ R.id.msglblMsg, R.id.msglblDate, R.id.msglblNumber }, 0);
                lvMsg.setAdapter(adapter2);
            }
        });
    }

任何帮助或额外的知识将不胜感激。:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-09 11:04:49

对于2: SimpleCursorAdapter希望'Context‘作为第一个参数。如果在OnItemClick方法中调用“this”,那么上下文就是OnItemClick。

如果您在一个片段中,使用getActivity(),或者在您的onCreate()方法中这样做:

代码语言:javascript
复制
Context mContext = getActivity();

并使用mContext作为new SimpleCursorAdapter(mContext, .....);

在活动中,可以将变量mContext在onCreate中赋值如下:

代码语言:javascript
复制
Context mContext = this;

还有其他方法,如getApplicationContext(),您可以尝试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33036426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档