Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.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-从调用它的主活动刷新/更新ListView_Android_Listview_Android Listview - Fatal编程技术网

Android-从调用它的主活动刷新/更新ListView

Android-从调用它的主活动刷新/更新ListView,android,listview,android-listview,Android,Listview,Android Listview,我有一个应用程序,它按变量、单位和数量列出产品的值 我有一个显示ListView的活动: public class OrderForm extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_order_for

我有一个应用程序,它按变量、单位和数量列出产品的值

我有一个显示ListView的活动:

public class OrderForm extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_order_form);

        ArrayList image_details = getListData();
        final ListView lv1 = (ListView) findViewById(R.id.custom_list);
        lv1.setAdapter(new CustomListAdapter(this, image_details));


    }

    private ArrayList getListData() {

        ArrayList results = new ArrayList();
        OrderDetailsClass orderData = new OrderDetailsClass();

        return results;
    }

    public void onAddItem(View view){

        ArrayList results = new ArrayList();
        OrderDetailsClass orderData = new OrderDetailsClass();

        orderData = new OrderDetailsClass();
        orderData.setVariants("Flavored");
        orderData.setUnit("cans");
        orderData.setQuantity(1);
        results.add(orderData);

        //selectVariant();
        //selectUnit();
        //selectQuantity();

    }
}
这是我的自定义适配器

public class CustomListAdapter extends BaseAdapter {

  private ArrayList<OrderDetailsClass> listData;

  private LayoutInflater layoutInflater;

      public CustomListAdapter(Context context, ArrayList<OrderDetailsClass> listData) {
    this.listData = listData;
    layoutInflater = LayoutInflater.from(context);
  }

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

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

  @Override
  public long getItemId(int position) {
    return position;
  }

  public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
        convertView = layoutInflater.inflate(R.layout.list_row_layout, null);
        holder = new ViewHolder();
        holder.variantView = (TextView) convertView.findViewById(R.id.variant);
        holder.unitView = (TextView) convertView.findViewById(R.id.unit);
        holder.quantityView = (TextView) convertView.findViewById(R.id.quantity);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    holder.variantView.setText(listData.get(position).getVariants());
    holder.unitView.setText("By, " + listData.get(position).getUnit());
    holder.quantityView.setText(String.valueOf(listData.get(position).getQuantity()));

    return convertView;
}

static class ViewHolder {
    TextView variantView;
    TextView unitView;
    TextView quantityView;
}

  public void updateResults(ArrayList<OrderDetailsClass> results) {
    listData = results;
      //Triggers the list update
      notifyDataSetChanged();
  }

}
公共类CustomListAdapter扩展了BaseAdapter{
私有数组列表数据;
私人停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场;
公共CustomListAdapter(上下文上下文,ArrayList listData){
this.listData=listData;
layoutInflater=layoutInflater.from(上下文);
}
@凌驾
public int getCount(){
返回listData.size();
}
@凌驾
公共对象getItem(int位置){
返回listData.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
视窗座;
if(convertView==null){
convertView=LayoutFlater.充气(R.layout.list\u row\u layout,null);
holder=新的ViewHolder();
holder.variantView=(TextView)convertView.findViewById(R.id.variant);
holder.unitView=(TextView)convertView.findViewById(R.id.unit);
holder.quantityView=(TextView)convertView.findViewById(R.id.quantity);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
holder.variantView.setText(listData.get(position.getVariants());
holder.unitView.setText(“By,”+listData.get(position.getUnit());
holder.quantityView.setText(String.valueOf(listData.get(position.getQuantity());
返回视图;
}
静态类视窗夹{
文本视图变量视图;
文本视图单元视图;
TextView quantityView;
}
公共无效更新结果(ArrayList结果){
listData=结果;
//触发列表更新
notifyDataSetChanged();
}
}
这是列表行布局

<?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:minHeight="50dp"
android:orientation="horizontal"
android:padding="5dip" 
 -->

<TextView
    android:id="@+id/variant"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:text="variant" />

<TextView
    android:id="@+id/unit"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:text="unit" />

<TextView
    android:id="@+id/quantity"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:text="quantity" />

</RelativeLayout>

这是活动订单

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">

<ListView
    android:id="@+id/custom_list"
    android:layout_width="fill_parent"
    android:layout_height="386dp"
    android:dividerHeight="1dp" />

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:onClick="onAddItem"
    android:text="Add" />

</RelativeLayout>

我想做的是,当我按下添加项上的
功能时,在添加数据后,列表视图将刷新并显示更改。到目前为止,我所看到的是
notifyDataSetChanged()
正在
BaseAdapter
类中使用。我已经尝试过了,但是似乎应该在
BaseAdapter
中调用
notifydatasetchange()
,我希望能够从我的
OrderForm
活动中刷新

有什么想法吗


谢谢。

在订单活动中保留对CustomAdapter的引用:

public class OrderForm extends Activity {

CustomListAdapter customListAdapter;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_order_form);

    ArrayList image_details = getListData();
    final ListView lv1 = (ListView) findViewById(R.id.custom_list);
    customListAdapter = new CustomListAdapter(this, image_details);
    lv1.setAdapter(customListAdapter);
}
然后可以调用
customAdapter.notifyDataSetChanged()
。这是适配器上的公共方法,因此您可以从活动中调用它