Java 单个ListView中的不同对象

Java 单个ListView中的不同对象,java,android,json,listview,Java,Android,Json,Listview,我有以下问题,我有json响应,它有3种不同的对象。我需要在一个列表视图中显示此数据。我正在使用GSON库来反序列化JSON Json文件 { "status": "success", "data": { "responses": [ { "id": 3, "status": 0, "order": { "id": 1, "address

我有以下问题,我有json响应,它有3种不同的对象。我需要在一个列表视图中显示此数据。我正在使用GSON库来反序列化JSON

Json文件

{
"status": "success",
"data": {
    "responses": [
        {
            "id": 3,
            "status": 0,
            "order": {
                "id": 1,
                "address": "3249-11-4910-0000, Burgaw, NC 28425, США",
                "description": "работа работа ",
                "created_at": 1535671020,
                "status": 0,
                "employer": {
                    "id": 11,
                    "name": "Test1",
                    "surname": "TESTOVICH2",
                    "phone": "777777777777",
                    "email": "qwe@gmail.com",
                    "photo": {
                        "id": 11,
                        "url": "http://link.com/storage/users/photos/a6e0ec9e4bf3e0b3ef0e2f06231169b0.png"
                    }
                }
            },
            "employee": {
                "id": 11,
                "name": "Test1",
                "surname": "TESTOVICH2",
                "phone": "777777777777",
                "email": "qwe@gmail.com",
                "photo": {
                    "id": 11,
                    "url": "http://link.com/storage/users/photos/a6e0ec9e4bf3e0b3ef0e2f06231169b0.png"
                }
            }
        }          
    ],
    "open_orders": [
        {
            "id": 2,
            "address": "улица Шакарима, Алматы 050000, Казахстан",
            "description": "пляжоажга",
            "created_at": 1535676060,
            "status": 0,
            "employer": {
                "id": 12,
                "name": "юзер",
                "surname": "юзер"
            },
            "employee": null,
            "category": {
                "id": 2,
                "name": "Уборка квартир"
            },
            "photos": [
                {
                    "id": 18,
                    "url": "http://link.com/storage/orders/open/2/45686fb353eacc7ff9d78eb90a6e8663.JPG"
                }
            ]
        }
    ],
    "direct_orders": [
        {
            "id": 13,
            "address": "Maevatanana, Мадагаскар",
            "description": "прямой заказ ",
            "created_at": 1540435200,
            "status": 0,
            "employer": {
                "id": 12,
                "name": "юзер",
                "surname": "юзер"
            },
            "category": {
                "id": 6,
                "name": "Услуги переводчика"
            },
            "district": {
                "id": 13,
                "name": "шшшш"
            },
            "photos": [
                {
                    "id": 36,
                    "url": "http://link.com/storage/orders/direct/13/5104e6605f400703ac702c1a59905889.jpg"
                }
            ]
        }
    ]
}
}

这是我的适配器

public class RequestInListAdapter extends ArrayAdapter<Data> {
private Context context;
private ArrayList<Data> RequestInListItem;

public RequestInListAdapter(Context context, ArrayList<Data> arrayList) {
    super(context, 0, arrayList);
    this.context = context;
    this.RequestInListItem = arrayList;
}

@SuppressLint("ResourceAsColor")
@NonNull
@Override
public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    final Data card_item = RequestInListItem.get(position);
for (Response order : responses) {
        if (convertView == null) {
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.order_item, parent, false);
        }
        TextView desc = convertView.findViewById(R.id.description);
        TextView address = convertView.findViewById(R.id.address);
        TextView dnt = convertView.findViewById(R.id.dnt);
        TextView category = convertView.findViewById(R.id.category);
        TextView status = convertView.findViewById(R.id.status);
        RelativeLayout card_layout = convertView.findViewById(R.id.card_layout);
        de.hdodenhof.circleimageview.CircleImageView photo_template = convertView.findViewById(R.id.photo_template);

        desc.setText(order.getOrder().getDescription());
        address.setText(order.getOrder().getAddress());
        Picasso.with(context).load(String.valueOf(order.getOrder().getEmployer().getPhoto())).resize(70, 70).into(photo_template);
        long timestamp = order.getOrder().getCreatedAt() * 1000L;
        dnt.setText(getDate(timestamp));
        status.setText("Response");
        convertView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

            }
        });
        return convertView;
    }
    return convertView;
}
公共类RequestInListAdapter扩展了ArrayAdapter{
私人语境;
私有ArrayList RequestInListItem;
公共RequestInListAdapter(上下文上下文,ArrayList ArrayList){
super(context,0,arrayList);
this.context=上下文;
this.RequestInListItem=arrayList;
}
@SuppressLint(“资源色”)
@非空
@凌驾
公共视图getView(最终整数位置,@Nullable View convertView,@NonNull ViewGroup父级){
最终数据卡\项目=RequestInListItem.get(位置);
对于(响应顺序:响应){
if(convertView==null){
convertView=LayoutInflater.from(getContext()).flate(R.layout.order_项,父项,false);
}
TextView desc=convertView.findViewById(R.id.description);
TextView地址=convertView.findViewById(R.id.address);
TextView dnt=convertView.findViewById(R.id.dnt);
TextView类别=convertView.findViewById(R.id.category);
TextView status=convertView.findViewById(R.id.status);
RelativeLayout card_布局=convertView.findViewById(R.id.card_布局);
de.hdodenhof.circleimageview.circleimageview照片\模板=convertView.findViewById(R.id.photo\模板);
desc.setText(order.getOrder().getDescription());
address.setText(order.getOrder().getAddress());
Picasso.with(context).load(String.valueOf(order.getOrder().getEmployer().getPhoto()).resize(70,70).into(photo_模板);
长时间戳=order.getOrder().getCreatedAt()*1000L;
dnt.setText(getDate(timestamp));
status.setText(“响应”);
convertView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
}
});
返回视图;
}
返回视图;
}
}

这段代码来自我的主类

private ArrayList<Data> arrayList = new ArrayList<>();
RequestInListAdapter adapter;


JSONReader jsonReader = new JSONReader();
BellIn bellIn = jsonReader.getBellIn(responseObj.toString());
arrayList.add(bellIn.getData());
adapter = new RequestInListAdapter(getContext(), arrayList);
listView.setAdapter(adapter);
private ArrayList ArrayList=new ArrayList();
RequestInListAdapter适配器;
JSONReader JSONReader=新的JSONReader();
BellIn-BellIn=jsonReader.getBellIn(responseObj.toString());
add(bellIn.getData());
适配器=新的RequestInListAdapter(getContext(),arrayList);
setAdapter(适配器);
现在Listview只显示1个元素,但我应该得到更多。问题是因为我传递了bellIn对象,它由3个不同的列表组成

public class Data {

private List<Response> responses = null;
private List<OpenOrder> open_orders = null;
private List<DirectOrder> direct_orders = null;

public List<Response> getResponses() {
    return responses;
}

public void setResponses(List<Response> responses) {
    this.responses = responses;
}

public List<OpenOrder> getOpenOrders() {
    return open_orders;
}

public void setOpenOrders(List<OpenOrder> openOrders) {
    this.open_orders = openOrders;
}

public List<DirectOrder> getDirectOrders() {
    return direct_orders;
}

public void setDirectOrders(List<DirectOrder> directOrders) {
    this.direct_orders = directOrders;
}
公共类数据{
私有列表响应=null;
私有列表未结订单=null;
私有列表直接_订单=null;
公共列表getResponses(){
回应;
}
公共响应(列出响应){
这一点。反应=反应;
}
公共列表getOpenOrders(){
退回未结订单;
}
公共作废setOpenOrders(列出openOrders){
这个。未结订单=未结订单;
}
公共列表getDirectOrders(){
直接返回订单;
}
公共无效setDirectOrders(列出directOrders){
this.direct_orders=directOrders;
}
1.如何在一个列表视图中显示3个不同的对象?

2.如何在ListView中显示所有项目(而不仅仅是第一个项目?


3.我可以为这个对象使用不同的视图吗?

制作一个自定义的列表视图,并在元素的自定义布局中添加所有3项,假设您不想在某个特定元素中显示所有项,然后使用属性
可见性使其不可见。首先,我更改了布局。因此,在最后,我在一个布局中放置了3个列表视图

<android.support.v4.widget.SwipeRefreshLayout
    android:id="@+id/swipe"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fillViewport="true">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:padding="10dp">

            <ListView
                android:id="@+id/listviewResponse"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:divider="@android:color/transparent"
                android:dividerHeight="10sp"
                android:paddingStart="15dp"
                android:paddingEnd="15dp" />

            <ListView
                android:id="@+id/listviewDirect"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:divider="@android:color/transparent"
                android:dividerHeight="10sp"
                android:paddingStart="15dp"
                android:paddingEnd="15dp" />

            <ListView
                android:id="@+id/listviewOpen"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:divider="@android:color/transparent"
                android:dividerHeight="10sp"
                android:paddingStart="15dp"
                android:paddingEnd="15dp" />
        </LinearLayout>
    </android.support.v4.widget.NestedScrollView>
</android.support.v4.widget.SwipeRefreshLayout>

我已经创建了3个不同的适配器,并将适配器设置为ListView

        @BindView(R.id.listviewResponse)
        ListView listViewResponse;
        @BindView(R.id.listviewOpen)
        ListView listViewOpen;
        @BindView(R.id.listviewDirect)
        ListView listViewDirect;

        private List<Response> responses = new ArrayList<>();
        private List<OpenOrder> open_orders = new ArrayList<>();
        private List<DirectOrder> direct_orders = new ArrayList<>();

        RequestListResponseAdapter adapterResponse;
        RequestListOpenAdapter adapterOpen;
        RequestListDirectAdapter adapterDirect;

        adapterResponse = new RequestListResponseAdapter(getContext(), responses);
        adapterOpen = new RequestListOpenAdapter(getContext(), open_orders, openType);
        adapterDirect = new RequestListDirectAdapter(getContext(), direct_orders);
        listViewResponse.setAdapter(adapterResponse);
        listViewDirect.setAdapter(adapterDirect);
        listViewOpen.setAdapter(adapterOpen);
@BindView(R.id.listviewResponse)
ListView listViewResponse;
@BindView(R.id.listviewOpen)
ListView listViewOpen;
@BindView(R.id.listviewDirect)
ListView listViewDirect;
私有列表响应=新建ArrayList();
private List open_orders=new ArrayList();
private List direct_orders=new ArrayList();
RequestListResponseAdapter适配器响应;
RequestListOpenAdapter适配器打开;
RequestListDirectAdapter适配器适配器Direct;
adapterResponse=new RequestListResponseAdapter(getContext(),responses);
adapterOpen=new RequestListOpenAdapter(getContext(),open_orders,openType);
adapterDirect=new RequestListDirectAdapter(getContext(),direct_orders);
setAdapter(adapterResponse);
setAdapter(adapterDirect);
listViewOpen.setAdapter(适配器打开);