Я работаю над приложением для обмена сообщениями и сделал список разговоров хорошо, но у меня проблемы с моим listview onitemclicklistner
. Я бы хотел, чтобы он извлекал textview
(id = lblID), конвертировал его в строку, а затем отобразил список цепочек (с этой строкой в качестве идентификатора) и отобразил его в моем listview
.OnItemClickListener/SimpleDateFormat
- Я делаю это правильно?
- Решено
simplecursoradapter
внутриonitemclicklistener
не позволит мне использовать «это» в качестве контекста, что я должен использовать вместо этого? - Я хотел бы использовать
SimpleDateFormat
, как бы это сделать между курсором и адаптером? решаемые Я я теперь получаю сообщение об ошибке, не кто не как исправить это ?:
10-10 07: 45: 54.926 24231-24231 /? E/AndroidRuntime: FATAL EXCEPTION: main 10-10 07: 45: 54.926 24231-24231 /? E/AndroidRuntime: Процесс: com.example.wq.myapp, PID: 24231 10-10 07: 45: 54.926 24231-24231 /? E/AndroidRuntime: android.database.sqlite.SQLiteException: рядом с «*»: синтаксическая ошибка (код 1): при компиляции: SELECT * FROM (SELECT DISTINCT date * 1 AS normalized_date, NULL AS * FROM sms WHERE (thread_id = 37 AND (type! = 3)) UNION SELECT DISTINCT date * 1000 AS normalized_date, NULL AS * FROM pdu LEFT JOIN pending_msgs ON pdu._id = pending_msgs.msg_id WHERE (thread_id = 37 AND msg_box! = 3 AND (msg_box! = 3 AND (m_type = 128 иЛИ m_type = 132 OR m_type = 130))) ORDER BY normalized_date убыв) ORDER BY normalized_date убыв
Вот мой код:
@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);
}
});
}
Любая помощь или дополнительные знания будет будем очень благодарны. :)
Огромное спасибо куче :) Я понял, что «это» возвращает OnItemClick, я просто не был уверен, как правильно получить контекст приложения :) –