我有一个列表视图,我在其中动态添加项目。我想要一些(我选择的)项目应该与左侧对齐,有些对齐到右侧。这个东西可以用于Android的ListView吗?
//适配器
if (convertView == null) {
holder = new EventViewHolder();
if (type == 1) {
convertView = inflater.inflate(
R.layout.multi_line_list_item, null);
holder.mtvMessage = (TextView) convertView
.findViewById(R.id.tvMessage);
holder.mtvMessage.setGravity(Gravity.LEFT);
holder.mtvMessage.setBackgroundResource(R.drawable.chatbluebox);
convertView.setTag(holder);
}else{
convertView = inflater.inflate(
R.layout.multi_line_list_item, null);
holder.mtvMessage = (TextView) convertView
.findViewById(R.id.tvMessage);
holder.mtvMessage.setGravity(Gravity.RIGHT);
holder.mtvMessage.setBackgroundResource(R.drawable.chatgreenbox);
convertView.setTag(holder);
}
如果可以,请告诉我并建议我一个好的解决方案?
答案 0 :(得分:5)
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"
在listView xml条目中添加这些行..,。
对于左右对齐,保持两个布局xmls一个右对齐和另一个左对齐(无论你想要什么样的样子)然后在listAdapter的getView()方法中设置一些条件并根据需要膨胀这些xml
if (convertView == null)
if(some condition)
convertView = mInflater.inflate(R.layout.rightxml, null);
else
convertView = mInflater.inflate(R.layout.leftxml, null);
....
答案 1 :(得分:2)
查看ListView模式stackFromBottom和transcriptMode,这些模式可能会为您完成大部分工作。
要左右对齐单元格中的项目,您可以在适配器getView方法中左右设置重力。
答案 2 :(得分:1)
使用以下内容。
adapter.notifyDataSetChanged();
然后
listView.setSelection(items.size()-1);
对于重力您需要在getview()
方法中动态设置重力。
例如: -
textview1.setGravity(Gravity.RIGHT);