Java 单个ListView中的不同对象
我有以下问题,我有json响应,它有3种不同的对象。我需要在一个列表视图中显示此数据。我正在使用GSON库来反序列化JSON Json文件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
{
"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(适配器打开);