【发布时间】:2016-05-10 20:29:23
【问题描述】:
我的安卓应用有一个简单的聊天功能。聊天记录存储在板载 SQLite 数据库中。我正在使用带有 SimpleCursorAdapter 的 ListView 来显示聊天。这就是我所拥有的:
public class Chat extends Fragment {
private View rootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
rootView = inflater.inflate(R.layout.chat, container, false);
return rootView;
}
@Override
public void onViewCreated(View rootView, Bundle savedInstanceState){
super.onViewCreated(rootView, savedInstanceState);
displayChats();
}
public void displayChats(){
DatabaseHelper databaseHelper = new DatabaseHelper(getActivity());
Cursor chatCursor = databaseHelper.getChatsCursor();
String[] fromColumns = {"messageInfo","messageText"};
int toViews{R.id.message_info, R.id.message_text};
SimpleCursorAdapter simpleCursorAdapter = new SimpleCursorAdapter(getContext(), R.layout.line_of_chat, chatCursor, fromColumns, toViews, 0);
ListView listView = (ListView) rootView.findViewById(R.id.chat_text_display);
listView.setAdapter(simpleCursorAdapter);
databaseHelper.close();
}
}
我有一个聊天模型,它有一个名为 localFlag 的布尔值作为其字段之一。如果聊天是从设备发送的,localFlag 设置为 true(或 1),如果聊天是从设备外部接收的,则 localFlag 设置为 false(或 0)。
我的 SQL 调用:
public static final String GET_ALL_CHATS = "select _id, localFlag, messageText, messageInfo from ChatTable";
public Cursor getChatsCursor(){
SQLiteDatabase sqliteDB = this.getReadableDatabase();
return sqliteDB.rawQuery(GET_ALL_CHATS, null);
}
我想做的是如果设置了本地标志,我想使用这个:
SimpleCursorAdapter simpleCursorAdapter = new SimpleCursorAdapter(getContext(), R.layout.outgoing_line_of_chat, chatCursor, fromColumns, toViews, 0);
如果没有设置本地标志,我想使用这个:
SimpleCursorAdapter simpleCursorAdapter = new SimpleCursorAdapter(getContext(), R.layout.incoming_line_of_chat, chatCursor, fromColumns, toViews, 0);
请注意,我想使用 R.layout.outgoing_line_of_chat 与 R.layout.incoming_line_of_chat。
我怎样才能做到这一点?
【问题讨论】:
-
在您的 ChatSimpleCursorAdapter 构造函数中测试 if flag == 1 因此您将布局设置为发件人,否则将您的布局设置为接收
-
不知道该怎么做。我知道如何进行测试,但我不知道如何在我的扩展 SimpleCursorAdapter 中使用
ChatSimpleCursorAdapter simpleCursorAdapter = new ChatSimpleCursorAdapter(getContext(), R.layout.outgoing_line_of_chat, chatCursor, fromColumns, toViews, 0);。 -
ChatSimpleCursorAdapter 构造函数仍然相同,只是删除“int 布局”并进行测试以在您的 super() 方法中设置布局,需要的所有参数是您的 super() 方法而不是 ChatSimpleCursorAdapter构造函数
-
我仍然不清楚你的建议。
标签: android listview simplecursoradapter