Java 将TextView添加到ListView项

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

我需要添加可以包含不同数量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.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*/

}