Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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
Java 从自定义对象的Arraylist创建BaseAdapter_Java_Android_Arraylist_Adapter_Baseadapter - Fatal编程技术网

Java 从自定义对象的Arraylist创建BaseAdapter

Java 从自定义对象的Arraylist创建BaseAdapter,java,android,arraylist,adapter,baseadapter,Java,Android,Arraylist,Adapter,Baseadapter,我正在构建一个SMS应用程序,并在列表视图中显示对话流量我的数据将被注册到消息的数组列表中,我创建了一个类来引用我的应用程序的SMS消息项 出于测试目的,我制作了以下适配器: package fr.nf.smsplus; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androi

我正在构建一个SMS应用程序,并在列表视图中显示对话流量我的数据将被注册到消息的数组列表中,我创建了一个类来引用我的应用程序的SMS消息项

出于测试目的,我制作了以下适配器:

package fr.nf.smsplus;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import java.util.List;

/**
 * Created by Nicolas on 20/05/2016.
 */
public class conversationAdapter extends BaseAdapter {

    Context context;
    Message[] conv;
    private static LayoutInflater inflater = null;

    public conversationAdapter(Context context, Message[] conv) {
        // TODO Auto-generated constructor stub
        this.context = context;
        this.conv = conv;
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return conv.length;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return conv[position];
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View vi = convertView;
        if (vi == null)
            vi = inflater.inflate(R.layout.item_bubble_me, null);
        TextView text = (TextView) vi.findViewById(R.id.txtMsg);
        text.setText(conv[position].content);
        return vi;
    }

}
以下是我所做工作的输出:

我的适配器正在工作。但是我现在需要在适配器的getView中选择要使用的气泡,因此我不能使用ArrayAdapter。我必须自己制作适配器

因此我需要将所有内容转换为消息的ArrayList而不是Array,以便为数组动态分配ressource

如何修改适配器以正确使用消息的ArrayList,从而在listview中应用它?

包fr.nf.smsplus;
package fr.nf.smsplus;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import java.util.List;

/**
 * Created by Nicolas on 20/05/2016.
 */
public class conversationAdapter extends BaseAdapter {

    Context context;
    ArrayList<Message> conv;
    private static LayoutInflater inflater = null;

    public conversationAdapter(Context context, ArrayList<Message> conv) {
        // TODO Auto-generated constructor stub
        this.context = context;
        this.conv = conv;
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return conv.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return conv.get(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        Message mMessage=conv.get(position);
        View vi = convertView;
        if (vi == null)
            vi = inflater.inflate(R.layout.item_bubble_me, null);
        TextView text = (TextView) vi.findViewById(R.id.txtMsg);
        text.setText(mMessage.content);
        return vi;
    }
}
导入android.content.Context; 导入android.view.LayoutInflater; 导入android.view.view; 导入android.view.ViewGroup; 导入android.widget.BaseAdapter; 导入android.widget.TextView; 导入java.util.List; /** *由Nicolas于2016年5月20日创建。 */ 公共类conversationAdapter扩展了BaseAdapter{ 语境; ArrayList conv; 专用静态充气机=空; 公共会话适配器(上下文,ArrayList conv){ //TODO自动生成的构造函数存根 this.context=上下文; this.conv=conv; 充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务); } @凌驾 public int getCount(){ //TODO自动生成的方法存根 返回conv.size(); } @凌驾 公共对象getItem(int位置){ //TODO自动生成的方法存根 返回conv.get(位置); } @凌驾 公共长getItemId(int位置){ //TODO自动生成的方法存根 返回位置; } @凌驾 公共视图getView(int位置、视图转换视图、视图组父视图){ //TODO自动生成的方法存根 消息mMessage=conv.get(位置); 视图vi=转换视图; 如果(vi==null) vi=充气机。充气(R.布局。项目编号,空); TextView text=(TextView)vi.findViewById(R.id.txtMsg); text.setText(mMessage.content); 返回vi; } }
注意:尝试使用,这将提高应用程序的性能。