Java 将TextView添加到ListView项
我需要添加可以包含不同数量TextView和Imageview对象的ListView项。我怎么做?以及如何确定和设置该对象的id?当我尝试将ImageView或TextView添加到id为R.id.chat_的LinearLayout消息时,应用程序崩溃:(Java 将TextView添加到ListView项,java,android,listview,Java,Android,Listview,我需要添加可以包含不同数量TextView和Imageview对象的ListView项。我怎么做?以及如何确定和设置该对象的id?当我尝试将ImageView或TextView添加到id为R.id.chat_的LinearLayout消息时,应用程序崩溃:( package com.me.my_应用程序; 导入java.util.ArrayList; 导入android.app.ListActivity; 导入android.content.Context; 导入android.graphics
package com.me.my_应用程序;
导入java.util.ArrayList;
导入android.app.ListActivity;
导入android.content.Context;
导入android.graphics.BitmapFactory;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.view.ViewGroup;
导入android.view.ViewGroup.LayoutParams;
导入android.widget.BaseAdapter;
导入android.widget.ImageView;
导入android.widget.LinearLayout;
导入android.widget.ListView;
导入android.widget.TextView;
导入android.widget.Toast;
公共类FriendSendMessageActivity扩展了ListActivity{
列表视图;
公共通讯适配器;
线性布局;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.chat\u send\u message);
Bundle extras=getIntent().getExtras();
如果(附加值!=null)
{
int index=Integer.parseInt(extras.get(getPackageName()+“.IndexInList”).toString();
字符串sentFrom=extras.get(getPackageName()+“.sentFrom”).toString();
int-id=Integer.parseInt(extras.get(getPackageName()+“.id”).toString();//
FriendItem.FriendItem=TabFriendsActivity.getList().get(索引);
view=getListView();
contactAdapter=新的contactAdapter();
contactAdapter.addItem(新的MessageItem.Message(1,true,true,true,“123”,“13:31”,新的ArrayList());
ArrayList=新建ArrayList();
添加(新的MessageItem.Message.Attachment(MessageAttachmentType.PHOTO,RoundedImage.createRoundedPhoto(BitmapFactory.decodeResource(MainActivity.res,R.drawable.temp_user_PHOTO)));
contactAdapter.addItem(新的MessageItem.Message(1,true,true,true,“123”,“9:10”,列表));
view.setAdapter(contactAdapter);
}
}
类ContactAdapter扩展了BaseAdapter{
private ArrayList mData=new ArrayList();
私人停车场;
私有静态final int IGNORE_ITEM_VIEW_TYPE=-1;
专用静态最终整型项目=0;//项目
专用静态最终整数类型_MAX_COUNT=2;//布置图项目
公共联系人适配器()
{
mInflater=(LayoutInflater)getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
}
公共无效附加项(最终消息项。消息项){
mData.add(项目);
notifyDataSetChanged();
}
public int getItemViewType(int位置)
{
返回类型\ U项目;
}
@凌驾
public int getViewTypeCount(){
返回类型\最大\计数;
}
public int getCount()
{
返回mData.size();
}
public MessageItem.Message getItem(int位置)
{
返回mData.get(位置);
}
公共长getItemId(int位置)
{
返回位置;
}
公共布尔值已启用(int-pos)
{
返回true;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
MessageItem.ViewHolder=null;
MessageItem.MessageItem=mData.get(位置);
LayoutParams params=新的LayoutParams(LayoutParams.WRAP\u内容,LayoutParams.WRAP\u内容);
if(convertView==null)
{
holder=新的MessageItem.ViewHolder();
convertView=mInflater.FLATE(项.in\U out?R.layout.chat\U消息\U in\U项:R.layout.chat\U消息\U out\U项,空,假);
如果(item.listAttach.size()>0)
holder.attachLL=(LinearLayout)findviewbyd(R.id.chat_消息);
for(MessageItem.Message.Attachment附加:item.listatch)
{
开关(连接类型)
{
案例照片:
如果(attach.photo!=null)
{
ImageView iv=新的ImageView(convertView.getContext());
//iv.设置布局参数(参数);
iv.setId(0x7f000000-1);
holder.listatch.add(newmessageitem.Message.Attachment(attach.type,iv));
Log.v(“,”1“+iv.getId()+“+holder.listatch.size());
}
其他的
Log.v(“,”Null!”);
打破
}
}
convertView.setTag(支架);
}否则{
holder=(MessageItem.ViewHolder)convertView.getTag();
}
对于(int i=0;i
和MessageItem.java:
package com.me.my_app;
import java.util.ArrayList;
import java.util.Comparator;
import android.graphics.Bitmap;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MessageItem
{
public static class Message implements Comparator<Message>
{
int id;
boolean in_out;
boolean is_read;
boolean is_delivered;
String message;
String time;
ArrayList<Attachment> listAttach;
public Message(int id, boolean in_out, boolean is_read, boolean is_delivered, String message, String time, ArrayList<Attachment> list)
{
this.id = id;
this.in_out = in_out;
this.is_read = is_read;
this.is_delivered = is_delivered;
this.message = message;
this.time = time;
listAttach = new ArrayList<Attachment>();
if(list != null)
{
for(Attachment a : list)
listAttach.add(a);
}
}
public int compare(Message object1, Message object2) {
return object1.time.compareTo(object2.time);
}
public static class Attachment
{
ImageView image;
MessageAttachmentType type;
Bitmap photo;
String Uri;
public Attachment(MessageAttachmentType type, Bitmap photo)
{
this.type = type;
this.photo = photo;
}
public Attachment(MessageAttachmentType type, ImageView image)
{
this.type = type;
this.image = image;
}
}
}
public static class ViewHolder
{
LinearLayout attachLL;
TextView text, time;
ArrayList<MessageItem.Message.Attachment> listAttach;
public ViewHolder()
{
listAttach = new ArrayList<MessageItem.Message.Attachment>();
}
}
}
enter code here
package com.me.my_应用程序;
导入java.util.ArrayList;
导入java.util.Comparator;
导入android.graphics.Bitmap;
导入android.widget.ImageView
package com.me.my_app;
import java.util.ArrayList;
import java.util.Comparator;
import android.graphics.Bitmap;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MessageItem
{
public static class Message implements Comparator<Message>
{
int id;
boolean in_out;
boolean is_read;
boolean is_delivered;
String message;
String time;
ArrayList<Attachment> listAttach;
public Message(int id, boolean in_out, boolean is_read, boolean is_delivered, String message, String time, ArrayList<Attachment> list)
{
this.id = id;
this.in_out = in_out;
this.is_read = is_read;
this.is_delivered = is_delivered;
this.message = message;
this.time = time;
listAttach = new ArrayList<Attachment>();
if(list != null)
{
for(Attachment a : list)
listAttach.add(a);
}
}
public int compare(Message object1, Message object2) {
return object1.time.compareTo(object2.time);
}
public static class Attachment
{
ImageView image;
MessageAttachmentType type;
Bitmap photo;
String Uri;
public Attachment(MessageAttachmentType type, Bitmap photo)
{
this.type = type;
this.photo = photo;
}
public Attachment(MessageAttachmentType type, ImageView image)
{
this.type = type;
this.image = image;
}
}
}
public static class ViewHolder
{
LinearLayout attachLL;
TextView text, time;
ArrayList<MessageItem.Message.Attachment> listAttach;
public ViewHolder()
{
listAttach = new ArrayList<MessageItem.Message.Attachment>();
}
}
}
enter code here
public class ExpAdapter extends BaseExpandableListAdapter {
/*SOME CODE HERE*/
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) myContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.child_row, null);
}
int groupId = ((ListTaskElement)this.getGroup(groupPosition)).id;
this.setupTaskView(convertView, this.childrenOfGroup(groupId, false).get(childPosition));
convertView.setTag(this.getChildId(groupPosition, childPosition));
return convertView;
}
/*SOME CODE HERE*/
}