我有会话列表和信使用户界面..我想要的是:当点击对话列表中的项目时,信使用户界面会显示该特定对话消息。 我的尝试:到目前为止,我还没有对此部分进行编码,我只想找一个主意,将每条消息立即保存到数据库中是好主意,当我在对话之间导航时删除相应的消息?
答案 0 :(得分:1)
我想在DB中保存conv并不是一个好主意。您应该序列化数据,还是应该使用文件来保存。或者更确切地说,您可以使用分隔符进行随机访问。
答案 1 :(得分:1)
最近我一直在做类似的事情。为了达到这个目的,我使用了一个TabHost,并将每个可能转换为TextView的FrameLayout关联起来,这就是我想要的。
这种方法有一个障碍:您只能访问当前打开的选项卡视图(在本例中为TextView)。如果您不打算将文本添加到非活动选项卡,则无需进一步操作,因为TabHost会处理每个选项卡的先前消息。但是,例如,如果要将消息添加到非活动选项卡,则必须先将它们存储在队列中,并在激活选项卡后,使用OnTabChangedListener事件处理它们。
这是我对TabHost结构的定义:
<LinearLayout xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<LinearLayout
android:id="@+id/TabContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="99"
android:orientation="vertical">
<TabHost
android:id="@+android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/TabLinearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- This makes your TabHost horizontally scrollable if it reaches a certain number of tabs -->
<HorizontalScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:scrollbars="none">
<TabWidget
android:id="@+android:id/tabs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></TabWidget>
</HorizontalScrollView>
<!-- You may also want to make this FrameLayour vertically scrollable -->
<FrameLayout
android:id="@+android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="10dp"></FrameLayout>
</LinearLayout>
</TabHost>
</LinearLayout>
如果你需要在tabchange上处理事件,你应该有这样的事情:
final TabHost th = (TabHost) (this.findViewById(android.R.id.tabhost));
th.setOnTabChangedListener(new OnTabChangeListener() {
@Override
public void onTabChanged(final String tabId) {
// Here you do the stuff you need. tabId is the name (also called Indicator) of the activated tab
}
});
您还应该了解控制每个选项卡的缓冲区。也就是说,控制每个标签不超过X条消息,好像它在没有控制的情况下增长,你的应用可能会开始反应迟钝。
当我编写这个部分时,这些链接可能会帮助你,就像我们对我做的那样:
https://gist.github.com/jerolimov/618086
http://androidituts.com/android-tab-layout-example/
http://learnandroideasily.blogspot.com.es/2013/07/android-tabwidget-example.html