带有textview,图像,复选框和按钮的Listview

时间:2012-02-29 17:07:27

标签: android xml

我似乎在为listview创建适配器时遇到问题,以便从另一个.xml类中显示项目(标题上的东西)。

  

有人可以给我一个示例或提示我应该使用哪个适配器   使用?在ListView上添加项目xml项目。

无论如何我都没有生成任何新物品。我只是使用来自另一个xml的每个现有项目。

这是我希望将其他xml转换为listview的图像。

This is the image.

这样做的原因是因为将来我想在新列表中添加项目。

3 个答案:

答案 0 :(得分:0)

您需要使用CustomAdapter扩展BaseAdapter,如下面的代码和链接 http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List14.html

public class List14 extends ListActivity {

    private static class EfficientAdapter extends BaseAdapter {
        private LayoutInflater mInflater;
        private Bitmap mIcon1;
        private Bitmap mIcon2;

        public EfficientAdapter(Context context) {
            // Cache the LayoutInflate to avoid asking for a new one each time.
            mInflater = LayoutInflater.from(context);

            // Icons bound to the rows.
            mIcon1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon48x48_1);
            mIcon2 = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon48x48_2);
        }

        /**
         * The number of items in the list is determined by the number of speeches
         * in our array.
         *
         * @see android.widget.ListAdapter#getCount()
         */
        public int getCount() {
            return DATA.length;
        }

        /**
         * Since the data comes from an array, just returning the index is
         * sufficent to get at the data. If we were using a more complex data
         * structure, we would return whatever object represents one row in the
         * list.
         *
         * @see android.widget.ListAdapter#getItem(int)
         */
        public Object getItem(int position) {
            return position;
        }

        /**
         * Use the array index as a unique id.
         *
         * @see android.widget.ListAdapter#getItemId(int)
         */
        public long getItemId(int position) {
            return position;
        }

        /**
         * Make a view to hold each row.
         *
         * @see android.widget.ListAdapter#getView(int, android.view.View,
         *      android.view.ViewGroup)
         */
        public View getView(int position, View convertView, ViewGroup parent) {
            // A ViewHolder keeps references to children views to avoid unneccessary calls
            // to findViewById() on each row.
            ViewHolder holder;

            // When convertView is not null, we can reuse it directly, there is no need
            // to reinflate it. We only inflate a new View when the convertView supplied
            // by ListView is null.
            if (convertView == null) {
                convertView = mInflater.inflate(R.layout.list_item_icon_text, null);

                // Creates a ViewHolder and store references to the two children views
                // we want to bind data to.
                holder = new ViewHolder();
                holder.text = (TextView) convertView.findViewById(R.id.text);
                holder.icon = (ImageView) convertView.findViewById(R.id.icon);

                convertView.setTag(holder);
            } else {
                // Get the ViewHolder back to get fast access to the TextView
                // and the ImageView.
                holder = (ViewHolder) convertView.getTag();
            }

            // Bind the data efficiently with the holder.
            holder.text.setText(DATA[position]);
            holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2);

            return convertView;
        }

        static class ViewHolder {
            TextView text;
            ImageView icon;
        }
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setListAdapter(new EfficientAdapter(this));
    }

    private static final String[] DATA = Cheeses.sCheeseStrings;
}

答案 1 :(得分:0)

主要思想是为列表视图中的单个项目创建XML布局。

然后创建一个CustomAdapter以附加到ListView。使用getView(),您可以初始化其中的单行数据/事件。你可以找到实现相同的各种样品..

答案 2 :(得分:0)

现在所有的答案都没有一致性。

这是一个更简单的解决方案或几乎是它的实际操作过程。

  1. 使用GUI设置开始构建线性布局,确保它们正确排列。我的方向是垂直的

  2. 完成所有操作后,将所有内容从上到下复制并粘贴到记事本中,然后移除。

  3. 现在在相对布局上创建。宽度和高度=匹配父级。方向垂直。

  4. 现在添加一个带有wrap_content的Scrollview,用于高度和宽度。然后粘贴2号任务中的所有内容。

  5. 在那里你可以看到整个视图的整个滚动视图。