Raf*_*ael 5 android listview adapter sqlbrite
在我们的聊天应用程序中,我们希望使用很酷的新库SQLBrite来更新数据库更改的聊天.由于我们的聊天有无尽的滚动,聊天室可以有非常大的消息列表,我们希望将提供给Chat ListView适配器的ArrayList拆分为两个列表.检查图形的想法.

我的问题是可以吗?如果是,我们如何在单个适配器中组合和处理两个动态ArrayLists?
编辑1 1.我需要在重置期间保持聊天滚动位置,并且在ArrayLists更新期间不会闪烁.
1.借助泛型,您可以使用单个ArrayList处理两个arraylist。
例如在适配器中:
setListData(ArrayList<T> pListData)
{
mListData=pListData;
}
Run Code Online (Sandbox Code Playgroud)
视野中
getView(int position, View convertView, ViewGroup parent){
T commonModel= getItem(position);
if(T instanceof ArrayListOneModel){
ArrayListOneModel model1=(ArrayListOneModel)T;
do stuf for first arraylit...
}
}
Run Code Online (Sandbox Code Playgroud)
3.否则,您可以先在arraylist中添加旧数据,然后使用collection addAll()在其中添加第二个最新消息列表。然后
adapter.notifyDataSetChanged()
Run Code Online (Sandbox Code Playgroud)
将设置第一条旧消息,然后设置列表中的最新消息
进一步说明: 在第二种方法中,如果两个arraylist都有不同的模型,则在两个模型中都包含一个枚举作为setter获取器。
public enum eType{
FIRST_LIST_TYPE,SECOND_LIST_TYPE
}
Run Code Online (Sandbox Code Playgroud)
从不同DB的集合中获取数据期间,键入Model。例如
public class model{
private enum eType;
Run Code Online (Sandbox Code Playgroud)
//您数据库中的其他setter getter值/ ** * Setter getter:* /
public void seteType(enum eType)
{
this.eType = eType;
}
public enum geteType()
{
return eType;
}
}
Run Code Online (Sandbox Code Playgroud)
在获取数据集时,键入例如
Model model = new Model();
model.seteType(eType.FIRST_LIST_TYPE) ;
//same for 2nd db.
& simply check type inside getView() according to your requirement.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4863 次 |
| 最近记录: |