Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用baseadapter创建用于显示发送方-接收方消息的listview?_Android - Fatal编程技术网

Android 如何使用baseadapter创建用于显示发送方-接收方消息的listview?

Android 如何使用baseadapter创建用于显示发送方-接收方消息的listview?,android,Android,当我们向下或向上滚动getview时出现问题? getview调用不正确? 背景图片是否从各自的url加载? 发送方和接收方的布局不同 公共类NewReadMessageAdapter扩展了BaseAdapter{ 私人语境 private LayoutInflater vi; public ImageLoader imageLoader; private Typeface tf; private class Image { String pic_url = new String();

当我们向下或向上滚动getview时出现问题? getview调用不正确? 背景图片是否从各自的url加载? 发送方和接收方的布局不同

公共类NewReadMessageAdapter扩展了BaseAdapter{ 私人语境

private LayoutInflater vi;
public ImageLoader imageLoader;
private Typeface tf;

private class Image {
    String pic_url = new String();
    Bitmap thumb;
    String messege = new String();
    int id;
    String time = new String();
    String sender_name = new String();
    public boolean sender_user;

}


private Image[] images;
ArrayList<Messages> messages = new ArrayList<Messages>();

private TextView txt_msg;

private TextView txt_name;

private TextView txt_time;
Button btn_loc;
private ImageView img;

 private ArrayList<Messages> mData = new ArrayList<Messages>();
 private TreeSet<Integer> mSeparatorsSet = new TreeSet<Integer>();
 private static final int TYPE_RECEIVER = 0;
 private static final int TYPE_SENDER = 1;
public NewReadMessageAdapter(Context context,
        ReadMessagePostParser messageParser, String sender_id,
        String reciever_id) {

    this.context = context;

    tf = Typeface.createFromAsset(context.getAssets(), "fonts/tahoma.ttf");
    messages = messageParser.getMessages();
    imageLoader = new ImageLoader(context.getApplicationContext());
    images = new Image[messages.size()];
    for (int i = 0, j = messages.size(); i < j; i++) {
        images[i] = new Image();
        images[i].messege = messages.get(i).getMessage_text();

        images[i].time = messages.get(i).getTime();
        if (messages.get(i).getMessage_from().equals("YES")) {
            images[i].sender_name = messageParser.sender_name;
            images[i].pic_url = messageParser.sender_pic_url;
            images[i].sender_user = true;
            images[i].id = Integer.parseInt(sender_id);


        } else {
            images[i].sender_user = false;
            images[i].id = Integer.parseInt(reciever_id);
            images[i].sender_name = messageParser.reciever_name;
            images[i].pic_url = messageParser.receiver_pic_url;

        }
    }

    for (int i = 0; i < images.length; i++) {
        System.out.println(images[i].pic_url + " " + images[i].sender_name
                + " " + images[i].messege);
    }
    vi = LayoutInflater.from(context);
    imageLoader = new ImageLoader(context.getApplicationContext());

}
public void addItem(final Messages item) {
    mData.add(item);
    notifyDataSetChanged();
}

public void addSeparatorItem(final Messages item) {
    mData.add(item);

    mSeparatorsSet.add(mData.size() - 1);
    notifyDataSetChanged();
}
@Override

public int getCount() {

    return mData.size();
}

@Override

public Object getItem(int position) {

    return mData.get(position);
}

@Override

public long getItemId(int position) {
    return position;
}
 @Override
 public int getItemViewType(int position) {
     return mSeparatorsSet.contains(position) ? TYPE_SENDER : TYPE_RECEIVER;
 }

 @Override
    public View getView( int position, View convertView, ViewGroup parent) {

        ViewHolder holder = null;
        int type = getItemViewType(position);

        if (convertView == null) {

            switch (type) {
                case TYPE_SENDER:

                    System.out.println("Sender");
                    holder = new ViewHolder();
                    convertView = vi.inflate(R.layout.list_row_layout_sender, null);
                    holder.txt_msg = (TextView) convertView
                            .findViewById(R.id.txt_msg);
                    holder.txt_name = (TextView) convertView
                            .findViewById(R.id.txt_name);
                    holder.txt_time = (TextView) convertView
                            .findViewById(R.id.txt_time);
                    holder.img = (ImageView) convertView
                            .findViewById(R.id.user_img);
                    holder.btn_loc = (Button) convertView
                            .findViewById(R.id.btn_loc);
                    convertView.setTag(holder);
                    break;
                case TYPE_RECEIVER:
                    System.out.println("Receiver");
                    convertView = vi.inflate(R.layout.list_row_layout_receiver, null);
                    holder = new ViewHolder();
                    holder.txt_msg = (TextView) convertView
                            .findViewById(R.id.txt_msg);
                    holder.txt_name = (TextView) convertView
                            .findViewById(R.id.txt_name);
                    holder.txt_time = (TextView) convertView
                            .findViewById(R.id.txt_time);
                    holder.img = (ImageView) convertView
                            .findViewById(R.id.user_img);
                    holder.btn_loc = (Button) convertView
                            .findViewById(R.id.btn_loc);
                    convertView.setTag(holder);
                    break;
            }

        } else {
            holder = (ViewHolder)convertView.getTag();
        }
        holder.btn_loc.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                System.out
                        .println("-------------- btn_loc ------------------- Sender");
                Developer.callIntent_userlocation(context, "18.50929796 ",
                        "73.79045371");
            }
        });
        holder.txt_name.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                System.out.println("----Name----");

            }
        });
        holder.img.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                System.out.println("----Image----");

            }
        });
        holder.txt_name.setText(mData.get(position).message_from);
        holder.txt_time.setText(mData.get(position).time);
        holder.txt_msg.setText(mData.get(position).message_text);
        if (position != 0) {
            cached = images[position - 1];
            if (cached.sender_user == flag) {
                holder.img.setVisibility(ImageView.INVISIBLE);
                holder.txt_name.setVisibility(TextView.INVISIBLE);
            } else
                imageLoader.DisplayImage(images[position].pic_url.trim()
                        .replace(" ", "%20"), ReadMessageActivityNew.activity,
                        holder.img);
        } else
            imageLoader.DisplayImage(
                    images[position].pic_url.trim().replace(" ", "%20"),
                ReadMessageActivityNew.activity, holder.img);

        return convertView;
    }
static class ViewHolder {
    TextView txt_msg;
    TextView txt_name;
    TextView txt_time;
    ImageView img;
    Button btn_loc;
}
private layoutiner vi;
公共图像加载器;
专用字体tf;
私人阶级形象{
字符串pic_url=新字符串();
拇指;
String messege=新字符串();
int-id;
字符串时间=新字符串();
String sender_name=新字符串();
公共布尔发送方\用户;
}
私有图像[]图像;
ArrayList消息=新建ArrayList();
私有文本视图txt_msg;
私有文本视图txt_名称;
私有文本视图txt_时间;
按钮btn_loc;
私有图像视图img;
private ArrayList mData=new ArrayList();
私有树集mseparatorset=新树集();
专用静态最终整数类型_接收器=0;
私有静态final int TYPE_SENDER=1;
公共NewReadMessageAdapter(上下文,
ReadMessagePostParser messageParser,字符串发送者\u id,
字符串接收器(id){
this.context=上下文;
tf=Typeface.createFromAsset(context.getAssets(),“font/tahoma.ttf”);
messages=messageParser.getMessages();
imageLoader=新的imageLoader(context.getApplicationContext());
images=新图像[messages.size()];
对于(int i=0,j=messages.size();i