Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.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
重用XML布局文件以显示不同的信息(Android应用程序)_Android_Sliding Window_Xml Layout - Fatal编程技术网

重用XML布局文件以显示不同的信息(Android应用程序)

重用XML布局文件以显示不同的信息(Android应用程序),android,sliding-window,xml-layout,Android,Sliding Window,Xml Layout,我是Android新手,有一个简单的问题。目前,我正在开发一个产品应用程序,允许用户添加、删除和浏览各种产品。应用程序使用预定义的基于XML的布局文件作为模板,填充整个屏幕以显示当前产品的详细信息。当用户添加新产品时,我希望重复使用相同的布局文件,但用新产品的信息填充它。此外,我希望保留以前添加的产品(例如ArrayList),用户可以通过水平滑动(从左到右或从右到左)浏览此列表。现在,最好使用什么来表示每个产品(视图、子视图等),以及如何重用相同的基于XML的布局文件来显示不同产品的详细信息。

我是Android新手,有一个简单的问题。目前,我正在开发一个产品应用程序,允许用户添加、删除和浏览各种产品。应用程序使用预定义的基于XML的布局文件作为模板,填充整个屏幕以显示当前产品的详细信息。当用户添加新产品时,我希望重复使用相同的布局文件,但用新产品的信息填充它。此外,我希望保留以前添加的产品(例如ArrayList),用户可以通过水平滑动(从左到右或从右到左)浏览此列表。现在,最好使用什么来表示每个产品(视图、子视图等),以及如何重用相同的基于XML的布局文件来显示不同产品的详细信息。请原谅我的英语,并提前感谢您的帮助

您可以创建一个扩展ArrayAdapter的新类,然后重写getView()方法以扩大自定义布局。getView()将返回单行的视图。这样您就可以重用您的布局。所以它看起来像:

public class ProductAdapter extends ArrayAdapter<Product> {

    private LayoutInflater li;

    public ProductAdapter(Context context, List<Product> products) {
        super(context, 0, products);
        li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

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

        // Get the product of the position
        Product product = getItem(position);

        View v = convertView;
        if ( v == null ) {
           // Your custom layout file for a single row in the list.
            v = li.inflate(R.layout.product_row, null);
        }

        // Populate your view here. Use v.findViewById().

        return v;
    }

}

添加产品时,可以通过调用ProductAdapter上的adapter.add()(如果要将产品添加到列表末尾)或insert()(指定要在产品列表中插入新产品的位置)方法将其添加到ArrayAdapter。之后,您可以调用adapter.notifyDataSetChanged()来通知您的适配器数据已更改,并且必须刷新列表。

您所描述的内容由实现。除了API参考之外,开发人员站点上还有一个


要实现它,您需要创建一个
PagerAdapter
子类来填充
ViewPager

的每个视图的详细信息。如果您有一个公共布局,那么在所有其他布局中插入公共布局会有什么问题
// The variable products is your initial list of products.
ProductAdapter adapter = new ProductAdapter(this, products); 
setListAdapter(adapter);