数据不会出现在列表视图中,直到我滚动它

时间:2015-06-11 17:26:10

标签: android android-listview

第一个记录内容出现,其他记录不出现,直到我滚动列表,所以如果这个列表有3个记录,这意味着我不能滚动,所以第一个记录内容只出现 not show the other two record's content

reocrd XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffffff">
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Basket ID: "
    android:layout_alignParentTop="true"
    android:id="@+id/basketIDt"
    android:padding="10dp"
    android:textSize="20dp"
    android:textColor="@color/abc_input_method_navigation_guard"
    android:paddingTop="30dp"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="text"
    android:layout_alignParentTop="true"
    android:id="@+id/basketID"
    android:layout_toRightOf="@+id/basketIDt"
    android:padding="10dp"
    android:textSize="20dp"
    android:textColor="@color/abc_input_method_navigation_guard"
    android:paddingTop="30dp"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="100dp"
    android:text="text"
    android:id="@+id/description"
    android:layout_below="@+id/basketID"
    android:textSize="15dp"
    android:layout_centerHorizontal="true"/>
  

listview活动

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:background="@color/abc_search_url_text_normal"
tools:context="com.example.pc_orbit.myapplication.Employee.BasketList">



        <ListView
            android:layout_width="match_parent"
            android:layout_height="400dp"
            android:id="@+id/lv">
        </ListView>


<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Scan QRCode"
    android:background="@color/button_material_dark"
    android:id="@+id/scan"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:textColor="#fffffb6b" />

  

ListAdapter

public class BasketListAdapter extends ArrayAdapter<BasketRecord> {
LayoutInflater mInflater;
Context context;
TextView basketID;
TextView description;
String latitude, longitude;
String citizenEmail;
String basketIDString ,descriptionString;
private List<BasketRecord> items = new ArrayList<BasketRecord>();

public BasketListAdapter(Context context, int resource, List<BasketRecord> items) {
    super(context, resource, items);
    this.context = context;
    this.items= items;
}


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

    if (null == convertView) {
        RelativeLayout view = (RelativeLayout) RelativeLayout.inflate(this.context,
                R.layout.basketsrecord, null);
        Log.d("SeenDroid", String.format("Get view %d", position));

        TextView id = new TextView(view.getContext());
        description= new TextView(view.getContext());

        latitude = this.items.get(position).getLatitude();
        longitude = this.items.get(position).getLongitude();
        citizenEmail= this.items.get(position).getCitizenEmail();
        basketIDString =this.items.get(position).getBasketID();
        descriptionString=this.items.get(position).getDescription();

        view.addView(id);
        view.addView(description);
        return view;
    } else {
        RelativeLayout view = (RelativeLayout) convertView;
        basketID = (TextView) view.getChildAt(1);
        description= (TextView) view.getChildAt(2);

        basketID.setText(this.items.get(position).getBasketID());
        description.setText(this.items.get(position).getDescription());

        latitude = this.items.get(position).getLatitude();
        longitude = this.items.get(position).getLongitude();
        citizenEmail= this.items.get(position).getCitizenEmail();
        basketIDString = this.items.get(position).getBasketID();
        descriptionString=this.items.get(position).getDescription();

        return convertView;
    }
    }
}

2 个答案:

答案 0 :(得分:0)

转换视图为空时,您没有设置数据。这将是在前几个通道中。您只能在else条件下设置它。一个快速解决方法是将转换视图设置为您正在创建的视图,而不是在<?php session_start(); $_SESSION["my_data"] = $_POST['action']; // STORE VALUE IN VARIABLE. echo "data received = " . $_POST['action']; // RETURN VALUE TO CONFIRM. ?> 的末尾返回它,然后摆脱if(不是它中的什么)并保持剩下的代码。

它看起来像这样

else

请注意,这只是一个快速修复。您应该清理它以使更多可读/减少代码行

答案 1 :(得分:0)

A会建议您使用BaseAdapter而不是ArrayAdapter,一些方法可以帮助计算项目并获得id dinamically;

使用'持有人'

class viewHolderItem{
   TextView id;
   TextView description;
}

public class itemAdapter extends BaseAdapter{
   Activity activity;
   ArrayList<Item> listItems;

    public itemAdapter(Activity activity,ArrayList<Item> listItems){
        this.activity=activity;
        this.listItems=listItems;
    }

    @Override
    public int getCount() {
        return listItems.size();
    }

    @Override
    public Object getItem(int position) {
        return listItems.get(position);
    }

    @Override
    public long getItemId(int position) {
    //it´s recomended to use an identifiyer for each item on list 
    //
    //return listItems.get(position).getItemId();
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View vi=convertView;
        final viewHolderItem viewhold;

        if(vi == null|| !(vi.getTag() instanceof viewHolderItem)) {
            LayoutInflater inflater = (LayoutInflater) actividad.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            vi = inflater.inflate(R.layout.basketsrecord,null);
            viewhold=new viewHolderItem();
            viewhold.id=(TextView) vi.findViewById(R.id.basketID);
            viewhold.description=(TextView)vi.findViewById(R.id.description);
            //all other view elements of your xml
            //...
        }
        else{
            viewhold = (viewHolderItem)vi.getTag();
        }

        final Item item = listItems.get(position);
        viewhold.id.setText(item.getBasketID());
        viewhold.description.setText(item.getDescription);
        //all other attributes of your object
        //..

        return (vi);
    }

}